不同的URL配置取决于Django中的域

时间:2016-06-07 14:44:39

标签: django mezzanine

在Mezzanine中,根据您要显示的内容,可以使用两个不同的URL。如果活动域位于子域或只是"常规"是否有办法检查内部 urls.py域?

这是两种不同的风格:

url('^$', direct_to_template, {'template': 'index.html'}, name='home'),
url('^$', mezzanine.blog.views.blog_post_list, name='home'),

我还没有找到一个可靠的方法。我想显示blog_post_list,如果我在子域(wildcard /例如sub.example.com)和index.html上,如果我在" main"域名(例如example.com)

1 个答案:

答案 0 :(得分:2)

不,当您的应用启动并且仅查看路径时,会加载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'),
)