我在我的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 http404錯誤urlconf混淆
- 6. 的Django 1.7應用的URLconf
- 7. django urlconf的奇怪警告
- 8. Django的urlconf有時候會失敗?
- 9. Django URLconf中的多個參數
- 10. Django URLConf沒有正確解決
- 11. Django URLConf爲前論壇網址
- 12. Django URLConf奇怪字符重定向
- 13. Django-storages S3:cname域名?
- 14. 在Django中,如何使用請求來確定其URLconf視圖名?
- 15. Grails:按名稱查找域名
- 16. Django的 - '否則' 回退默認的URLconf在urls.py
- 17. 爲什麼Django在加載我的URLconf時發出警告?
- 18. 當urlconf不爲空時,Django會拋出NoReverseMatch錯誤?
- 19. Django模板和URLconf中的日期翻譯
- 20. Django URLConf包括從子應用程序不工作
- 21. Tango with Django:在tango_with_django_project.urls中定義的URLconf。頁面未找到
- 22. Django:如何從視圖中獲取當前的URLConf規則?
- 23. 如何正確分離Django教程3中的URLConf?
- 24. Django urlconf無法解析有效的正則表達式
- 25. Django的百分比符號URLConf正則表達式
- 26. Django - 如何將urlconf中的字符串值傳遞給feeds.py類
- 27. django會話和子域名問題
- 28. 用django-localeurl更改子域名+語言
- 29. 如何將域名指向Django網址?
- 30. 在django模型中檢測HOST域名