我有两个站点共享相同的 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/