Django --- 两个域名访问使用同一个 django 项目的且访问路径不一样
我用了放法二。目前执行了,都用了'mysite.urls_bbbb', 就 是访问 aaa 也进行了
urls_bbbb.py自己估计 是 url(r'^', include("aaa.urls", namespace="aaa")), 我没有把正确 的 aaa.urls 填进去,不知道 aaa.urls 是哪个目录下的哪个文件?
原文:
Django --- 两个域名访问使用同一个 django 项目的且访问路径不一样
方法二: 通过配置 django 中间件来完成.
首先得说一下实验的环境:
client <-> nginx <-> uwsgi <-> django_project
上面的流程就是我当前部署的 django 项目的环境.
要想通过 django 中间件来完成多域名使用同一个 django 项目, 首先, 需要确保 nginx 配置当中有添加此项:
proxy_set_header Host $host:$server_port;
余下的就是开始编写中间件了.
编写 MultipleDomainMiddleware 中间件
在
settings.py 所在目录下, 新建一个文件
middlewares.py, 并添加以下内容:
from django.utils.deprecation import MiddlewareMixin
from django.conf import settings
class MultipleDomainMiddleware(MiddlewareMixin):
def process_request(self, request):
host = request.get_host()
url_config = getattr(settings, 'MULTIPLE_UFL_CONFIG', None)
if url_config:
for key in url_config.keys():
if key in host:
request.urlconf = url_config[key]
settings.py 中修改一些配置
MIDDLEWARE = [
'mysite.middlewares.MultipleDomainMiddleware',
...
]
ALLOW_HOSTS = ['127.0.0.1', '
www.aaa.com', '
aaa.com', '
www.bbb.com', '
bbb.com']
MULTIPLE_UFL_CONFIG = {
'
aaa.com': 'mysite.urls',
'
bbb.com': 'mysite.urls_bbbb',
}
ROOT_URLCONF = 'mysite.urls'
添加相应的
urls.py 文件
同时在根
urls.py 文件所在目录新增一个文件 urls_bbb.py.两个文件的内容可能如下:
**
urls.py **
from django.conf.urls import url, include
from django.contrib import admin
from django.conf import settings
from django.views.static import serve
import aaa.views
urlpatterns = [
url(r'^', include("aaa.urls", namespace="aaa")),
url(r'^admin/', admin.site.urls),
]
**
urls_bbb.py **
from django.conf.urls import url, include
from django.contrib import admin
from django.conf import settings
from django.views.static import serve
import bbb.views
urlpatterns = [
url(r'^', include("bbb.urls", namespace="bbb")),
url(r'^admin/', admin.site.urls),
]
至此, 即可实现同一个 django 项目, 使用多个域名访问不同路径了.
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
https://www.v2ex.com/t/659311
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.