2016-06-07 5 views
1

В Mezzanine есть два разных URL-адреса, которые вы можете использовать в зависимости от того, какой контент вы хотите отображать. Есть ли способ проверить внутри urls.py, если активный домен находится в субдомене или просто в «обычном» домене?Различные конфигурации URL в зависимости от домена в Django

Это два разных стиля:

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

Я не нашел твердый путь для этого еще. Я хочу отобразить blog_post_list, если я нахожусь в поддомене (подстановочный знак/например, sub.example.com) и index.html, если я нахожусь в «основном» домене (например, example.com)

ответ

1

Нет, загружается urls.py когда ваше приложение загружается и смотрит только на путь. Текущий URL-адрес является частью объектов request, которые получают Middleware и View.

Однако вы можете использовать представление для делегирования запроса на основе 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'), 
) 
Смежные вопросы