Django - 对两个不同的域名使用不同的 views.py?

标签 django url-routing

我有两个站点共享相同的 models.py 和管理后端,但使用不同的 views.py 和不同的模板文件。

有没有办法让 Django 为这两个域名分别使用不同的 views.py 文件?我可以在某种自定义中间件中查看 request.HTTP_HOST 吗?

最佳答案

扩展一下@jdi 的回答。 Django 中的 Sites 框架就是为此目的而创建的,但您需要分别为每个域提供服务才能利用它。您所做的是为每个域创建一个单独的 settings.py 文件。你仍然可以有一个通用的 settings.py,每个都包含。例如:

设置.py
# all common settings here

domain1_settings.py
from settings import *

SITE_ID = 1
ROOT_URLCONF = domain1_urls.py

domain2_settings.py
from settings import *

SITE_ID = 2
ROOT_URLCONF = domain2_urls.py

然后,您手动指定在启动服务器时要使用的设置文件:

发展

python manage.py runserver --settings=domain1_settings.py

生产( unicorn )

python manage.py run_gunicorn --settings=domain1_settings.py

生产(uwsgi)

uwsgi --env DJANGO_SETTINGS_MODULE=myproject.domain1_settings

显然,您更可能希望将其包含在 gunicorn/uwsgi 的实际配置中;以上内容仅供说明之用。

关于Django - 对两个不同的域名使用不同的 views.py?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10690625/

相关文章:

python - 带有 XMLField 的 Django 模型

jquery - 500(内部服务器错误)从 JQuery/ajax 到 heroku 服务器的 GET 和请求 POST

python - 使用 django ORM 进行高级排序

javascript - 如何在新选项卡中打开 $state,go()

php - 如何确保我的网站始终以 www.mysite.com 而不是 mysite.com 打开 - 这搞乱了我的 Google OpenID 登录?

mysql - Django save() 不起作用

django - 如何在 Django F 表达式中将日期和时间字段合并为日期时间字段

javascript - AngularJS Ui Router 正则表达式匹配 url 中的通配符

django - 在 Django 1.5 中使用通用 View 在模板中添加 url 参数

asp.net-mvc - asp.net mvc 中的递归路由