不同的 URL 配置取决于 Django 中的域
Different URL config depending on domain in Django
在 Mezzanine 中,您可以使用两个不同的 URL,具体取决于您要显示的内容。有没有办法检查 inside urls.py 活动域是在子域上还是仅在 "regular" 域上?
这是两种不同的风格:
url('^$', direct_to_template, {'template': 'index.html'}, name='home'),
url('^$', mezzanine.blog.views.blog_post_list, name='home'),
我还没有找到可靠的方法。如果我在子域(通配符/例如 sub.example.com),我想显示 blog_post_list,如果我在 "main" 域(例如,example.com),我想显示 index.html
不,urls.py
在您的应用程序启动时加载并且只查看路径。当前 URL 是中间件和视图接收的 request
对象的一部分。
但是,您可以根据 URL 路径使用视图来委托请求。
url('^$', my_view, name='home')
并且视图可以使用当前 request
对象委托给两个后续视图之一。
def my_view(request):
if 'something' in request.META['HTTP_HOST']:
return something_view(request)
else:
return another_view(request)
但是,有一个应用程序可以做您想做的事,django-hosts。它允许根据主机加载不同的 urls.py
文件。
from django_hosts import patterns, host
host_patterns = patterns('path.to',
host(r'api', 'api.urls', name='api'),
host(r'beta', 'beta.urls', name='beta'),
)
在 Mezzanine 中,您可以使用两个不同的 URL,具体取决于您要显示的内容。有没有办法检查 inside urls.py 活动域是在子域上还是仅在 "regular" 域上?
这是两种不同的风格:
url('^$', direct_to_template, {'template': 'index.html'}, name='home'),
url('^$', mezzanine.blog.views.blog_post_list, name='home'),
我还没有找到可靠的方法。如果我在子域(通配符/例如 sub.example.com),我想显示 blog_post_list,如果我在 "main" 域(例如,example.com),我想显示 index.html
不,urls.py
在您的应用程序启动时加载并且只查看路径。当前 URL 是中间件和视图接收的 request
对象的一部分。
但是,您可以根据 URL 路径使用视图来委托请求。
url('^$', my_view, name='home')
并且视图可以使用当前 request
对象委托给两个后续视图之一。
def my_view(request):
if 'something' in request.META['HTTP_HOST']:
return something_view(request)
else:
return another_view(request)
但是,有一个应用程序可以做您想做的事,django-hosts。它允许根据主机加载不同的 urls.py
文件。
from django_hosts import patterns, host
host_patterns = patterns('path.to',
host(r'api', 'api.urls', name='api'),
host(r'beta', 'beta.urls', name='beta'),
)