我在我的Django项目中有两个应用程序:一个面向公众的应用程序和一个管理应用程序(而不是 django的内置管理站点)。我想要一个域名指向公共站点,另一个域名指向管理站点。 (即,例如,/index.html路由会根据域名指向不同应用中的视图)。每个应用都有自己的URLconf,它们都被包含在主URLconf中。什么是最好的方法来做到这一点?Django - 按域名URLConf?
1
A
回答
3
有很多方法,这里有一些可以为你工作取决于你的具体限制。
光劈:在HTTP服务器配置黑名单或白名单网址,为每个域
猴子补丁网址路由器来检查request['META']['HTTP_HOST'],因为它明确不可用的时候正在配置网址
2 Django实例:使2个设置文件:
让一个网址,每个站点脚本,
每个域
实例让每个站点一个设置,这样
运行一个Django的实例设置文件:
management_settings.py
from settings import *
ROOT_URLCONF='management_urls.py'
public_settings.py
from settings import *
ROOT_URLCONF='public_urls.py'
,并运行在每一个Django的服务器。不要忘记使用--settings切换管理命令,例如:
# run public
./manage.py runserver --settings public_settings
# run management
./manage.py runserver --settings management_settings
11
您可以用您自己的主机,中间件
例如: https://code.djangoproject.com/wiki/MultiHostMiddleware
settings.py
HOST_MIDDLEWARE_URLCONF_MAP = {
# Control Panel
"www.example.com": "webapp.sites.example.urls",
}
multihost.py
from django.conf import settings
from django.utils.cache import patch_vary_headers
class MultiHostMiddleware:
def process_request(self, request):
try:
request.META["LoadingStart"] = time.time()
host = request.META["HTTP_HOST"]
if host[-3:] == ":80":
host = host[:-3] # ignore default port number, if present
if settings.HOST_MIDDLEWARE_URLCONF_MAP.has_key(host):
request.urlconf = settings.HOST_MIDDLEWARE_URLCONF_MAP[host]
request.META["MultiHost"] = str(request.urlconf)
else:
request.META["MultiHost"] = str(settings.ROOT_URLCONF)
except KeyError:
pass # use default urlconf (settings.ROOT_URLCONF)
def process_response(self, request, response):
if request.META.has_key('MultiHost'):
response['MultiHost'] = request.META.get("MultiHost")
if request.META.has_key('LoadingStart'):
_loading_time = time.time() - int(request.META["LoadingStart"])
response['LoadingTime'] = "%.2fs" % (_loading_time,)
if getattr(request, "urlconf", None):
patch_vary_headers(response, ('Host',))
return response
相关问题
- 1. Django URLconf错误
- 2. Django中的URLconf
- 3. 了解Django的urlconf
- 4. Django URLConf中的“Fallthrough”?
- 5. 变量和Django URLConf
- 6. Django http404错误urlconf混淆
- 7. django urlconf的奇怪警告
- 8. 的Django 1.7应用的URLconf
- 9. 按Django域名分类的语言
- 10. Django URLConf奇怪字符重定向
- 11. Django URLconf中的多个参数
- 12. Django的urlconf有时候会失败?
- 13. 将日期传递给Django中的URLconf
- 14. Django URLConf为前论坛网址
- 15. 由urlconf引起的django unprintable templatesyntaxerror对象?
- 16. Django URLConf没有正确解决
- 17. Django函数问题和urlconf混淆
- 18. Django-storages S3:cname域名?
- 19. Django的S3子域名
- 20. django子域名la craigslist.com
- 21. 在Django中,如何使用请求来确定其URLconf视图名?
- 22. 按域名选择路由
- 23. 按域名过滤Iframe;
- 24. Grails:按名称查找域名
- 25. 当urlconf不为空时,Django会抛出NoReverseMatch错误?
- 26. Django的 - '否则' 回退默认的URLconf在urls.py
- 27. Django的百分比符号URLConf正则表达式
- 28. Tango with Django:在tango_with_django_project.urls中定义的URLconf。页面未找到
- 29. django 1.8中的正则表达式urlconf将不起作用
- 30. 如何正确分离Django教程3中的URLConf?