2016-06-07 91 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'), 
)