我正在制作一个 django 应用程序,它将有 2 个应用程序。当您打开 www.webName.co.id 时,它将使用应用程序 A 中的 urls.py,但当您打开 webName.co.uk 它将使用应用程序 B 中的 urls.py
这是主项目中的 urls.py:
urlpatterns = [
url(r'^tinymce/', include('tinymce.urls')),
url(r'^filer/', include('filer.urls')),
url(r'^ckeditor/', include('ckeditor_uploader.urls')),
url(r'^admin/', admin.site.urls),
]
我打算向该文件添加这样的东西:
if settings.CURRENT_HOST_IP == 'www.webname.co.id':
urlpatterns += url(r'^', include('webname_id.urls')),
else:
urlpatterns += url(r'^', include('webname_uk.urls')),
这样,它将仅使用正在使用的应用程序的URL,具体取决于您进入站点的当前www。
所以我的项目有 1 个后端管理员,但有多个前端模板和 URL。问题是我不知道如何在 settings.py 中设置CURRENT_HOST_IP,
通常我使用它来获取用户正在使用的当前IP/主机:
request.META['HTTP_HOST']
但是我无法访问设置中的请求对象,在 Python(不是 django(中有什么方法可以获取我在浏览器中输入的 www/IP 地址/主机名?
主项目中需要两个备用 urlconf 文件:
# project/project/urls_id.py
from django.conf.urls import url
from urls import urlpatterns
urlpatterns.append(url(r'^', include 'webname_id.urls'))
# project/project/urls_uk.py
from django.conf.urls import url
from urls import urlpatterns
urlpatterns.append(url(r'^', include 'webname_uk.urls'))
在中间件中,根据主机选择适当的 urlconf。
class YourMiddleware(object):
# For Django 1.10+
def __init__(self, get_response):
self.get_response = get_response
def __call__(self, request):
if request.get_host() == 'www.webname.co.id':
request.urlconf = 'project.urls_id'
else:
request.urlconf = 'project.urls_uk'
response = self.get_response(request)
return response