使用场景:

Django中有两个app,如果通过域名来访问,可以使用www.domain.com/a、www.domain.com/b来访问。这样就显得有点LowB了。如果我想通过a.domain.com、b.domain.com来访问两个app怎办?

请使用django-host来实现。

1、安装django-host 插件

pip install django-host

2、修改django配置 settings.py

1.在 INSTALLED_APP 中注册 'django-host' 应用

2.在 MIDDLEWARE 配置项的开始位置,添加 'django_hosts.middleware.HostsRequestMiddleware'

3.在 MIDDLEWARE 配置项的结束位置,加'django_hosts.middleware.HostsRequestMiddleware'

4.在 settings.py 文件同目录下创建 host.py 文件,添加如下内容:
from django_hosts import patterns, host
from django.conf import settings from APP1 import views
from APP2 import views host_patterns = patterns('',
host(r'app1', 'APP1.urls', name='APP1'),
host(r'app2', 'APP2.urls', name='APP2'),
) 5.修改 settings.py 文件,在 ROOT_URLCONF 配置项之后增加 ROOT_HOSTCONF = '项目目录名.host' #注意,不是app的名字 6.修改 settings.py 文件,在ROOT_HOSTCONF 配置项之后增加 DEFAULT_HOST = 'app1' #设置一个默认的域名,在没有匹配到所请求的域名时,默认返回这个。 7.在每个app下创建自己的urls.py

由于线上使用的Nginx+Uwsgi的环境,顺便贴一下Nginx和Uwsgi的配置

Nginx的配置如下:

a.domain.com配置

  server {
listen 80;
server_name a.domain.com;
location / {
include uwsgi_params;
uwsgi_pass 127.0.0.1:8000;
uwsgi_param UWSGI_SCRIPT web.wsgi;
} location /static {
alias /data/local/app/app1/static;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}

b.domain.com配置

server {
listen 80;
server_name b.domain.com; #charset koi8-r; access_log logs/app2.access.log main;
error_log logs/app2.error.log info; location / {
include uwsgi_params;
uwsgi_pass 127.0.0.1:8000;
uwsgi_param UWSGI_SCRIPT web.wsgi;
uwsgi_read_timeout 20;
} #location /static {
# alias /data/local/app/blog/web/WeChatAPI/static;
#}
}

Uwsgi的配置如下:

[uwsgi]

socket = :8000
chdir = /data/local/app/
#module = web.wsgi:app1
wsgi-file = web/wsgi.py
master = true
processes = 1
pidfile = /tmp/web-master.pid
daemonize = /var/log/uwsgi/app1.log

参考:http://blog.csdn.net/sinat_21302587/article/details/74017312

django-hsot github地址:https://github.com/jazzband/django-hosts

Django多域名配置之Django-hosts插件的使用的更多相关文章

  1. django的命令, 配置,以及django使用mysql的流程

    1.Django的命令: 下载 pip install django==1.11.16 pip install django==1.11.16 -i 源 创建项目 django-admin start ...

  2. Django静态文件配置-request方法-ORM简介-字段的增删改查

    app的创建注意事项: 在Django新创建的app要在seetings.py中添加注册,才会生效 创建app:django-adminapp an startapp app名称 或者 python3 ...

  3. 73、django之setting配置汇总

    前面的随笔中我们经常会改setting配置也经常将一些配置混淆今天主要是将一些常见的配置做一个汇总. setting配置汇总 1.app路径 INSTALLED_APPS = [ 'django.co ...

  4. django之setting配置汇总

    前面的随笔中我们经常会改setting配置也经常将一些配置混淆今天主要是将一些常见的配置做一个汇总. setting配置汇总 1.app路径 INSTALLED_APPS = [ 'django.co ...

  5. django之基本配置

    Python的WEB框架有Django.Tornado.Flask 等多种,Django相较与其他WEB框架其优势为:大而全,框架本身集成了ORM.模型绑定.模板引擎.缓存.Session等诸多功能. ...

  6. django之session配置

    session应用示例 from django.shortcuts import render from django.shortcuts import HttpResponse from djang ...

  7. Django + Apache + wsgi配置和环境搭建(ubuntu)

    上一篇写了Django + nginx + uwsgi配置和环境搭建(ubuntu) 由于公司服务器环境问题,又配置了apache的环境.记录例如以下: 一. 安装环境: #apache sudo a ...

  8. Django---Http协议简述和原理,HTTP请求码,HTTP请求格式和响应格式(重点),Django的安装与使用,Django项目的创建和运行(cmd和pycharm两种模式),Django的基础文件配置,Web框架的本质,服务器程序和应用程序(wsgiref服务端模块,jinja2模板渲染模块)的使用

    Django---Http协议简述和原理,HTTP请求码,HTTP请求格式和响应格式(重点),Django的安装与使用,Django项目的创建和运行(cmd和pycharm两种模式),Django的基 ...

  9. python - Django 跨域配置

    一:settings 中间件配置路径 MIDDLEWARE = [ 'django.middleware.security.SecurityMiddleware', 'django.contrib.s ...

随机推荐

  1. Linux实践:模块

    标签(空格分隔): 20135321余佳源 一.实践原理 Linux模块是一些可以作为独立程序来编译的函数和数据类型的集合.之所以提供模块机制,是因为Linux本身是一个单内核.单内核由于所有内容都集 ...

  2. 基于SSH框架开发的《高校大学生选课系统》的质量属性的实现

    基于SSH框架开发的<高校大学生选课系统>的质量属性的实现 对于可用性采取的是错误预防战术,即阻止错误演变为故障:在本系统主要体现在以下两个方面:(1)对于学生登录模块,由于初次登陆,学生 ...

  3. 如何实现基于ssh框架的投票系统的的质量属性

    如何实现基于ssh框架的投票系统的的质量属性: 项目 :网上考试系统 我做的是网上考试系统,因为标准化的考试越来越重要,而通过计算机进行标准化判卷,系统会自动判卷出成绩,组织考试的人不用组织人员打印试 ...

  4. BMC 安装操作系统以及 驱动的处理

    1. 在一个郊区的机房有两台机器需要重装系统. 2. 服务器配置了BMC 还不错... 能够节约很多时间. 3. BMC的配置不算复杂, 就是management 网口插上网线,然后配置一下可以使用的 ...

  5. Python文件os模块

    一.文件操作 1.打开一个文件 fo = open("foo.txt", "wb") fo.write( "www.runoob.com!\nVery ...

  6. centos7安装浏览器

    firefox(火狐) sudo yum install firefox chrome(谷歌) 添加源:sudo wget http://repo.fdzh.org/chrome/google-chr ...

  7. yum install 报错[Errno 14] curl#37 - Couldn't open file /mnt/repodata/repomd.xml

    1.然后按照网上的一些修改,先是执行: yum cleam all 然后 yum makecache,问题还是没解决,继续报错. 其实这两条命令就是清空缓存,然后再重新缓存的意思,有时候可能有效. 2 ...

  8. IntersectionObserver简介

    写在前面 在移动端,有个很重要的概念,叫做懒加载,适用于一些图片资源特别多,ajax数据特别多的页面中,经常会有动态加载数据的场景中,这个时候,我们通常是使用监听scroll或者使用setInterv ...

  9. 【Java】 内部类

    [Java]内部类 可以将一个类的定义放在另一个类的定义内部,这就是内部类. 使用内部类的的原因主要有三点: 内部类方法可以访问该类定义所在的作用域中的数据,包括私有的数据. 内部类可以对同一个包中的 ...

  10. js 錯誤

    try{ //需要被檢測是否拋出錯誤 } catch(err) { //錯誤處理代碼 } try.catch成對出現 throw:拋出錯誤 當錯誤發生時,javascript引擎停止運行,并生成一個錯 ...