2016-06-07 85 views
1

在夹层中,您可以使用两个不同的URL,具体取决于您想要显示的内容。有没有办法检查里面的urls.py,如果活动域位于子域或只是“常规”域?取决于Django中的域的不同的URL配置

这是两种不同的风格:

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

我还没有找到这个坚实的路要走。如果我位于子域(通配符/例如sub.example.com)和index.html,并且位于“主”域(例如example.com)上,我想显示blog_post_list

回答

1

不,加载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'), 
)