Как в django настроить переадресацию на субдомен?

Задача:

перенаправлять с mysite.com/shop_slug/action на shop_slug.mysite.com/action

Установил django-hosts, прописал hosts.py:

from django_hosts import patterns, host

host_patterns = patterns('',
                         host(r'(?P<shop_slug>\w+)', 'shop.urls', name='shop_sub'),
                         host(r'www', 'main.urls', name='home'),
                         )


shop.urls:

from django.conf.urls import url
from shop import views


urlpatterns = [
    url('^(?P<slug>\w+)/$', views.ProductListView.as_view(), name='product_list'),
    url('^$', views.CreateShopView.as_view(), name='create_shop'),
    url(r'^(?P<slug>\w+)/product/(?P<productId>\d+)/$', views.ProductDetailView.as_view(),
        name="product_detail"),
    url(r'^(?P<slug>\w+)/category/(?P<category_id>\d+)/$', views.CategoryView.as_view(), name='view_category'),
]


settings.py:
ROOT_URLCONF = 'main.urls'
DEFAULT_HOST = 'home'
ROOT_HOSTCONF = 'hosts'

при попытке зайти на shop_slug.localhost:8000 говорит, что не может найти страницу

Что я делаю не так?
  • Вопрос задан
  • 293 просмотра
Пригласить эксперта
Ответы на вопрос 2
sim3x
@sim3x
tema_sun
@tema_sun
Во-первых, вы сначала пишете, что хотите из mysite.com/shop_slug/ сделать shop_slug.mysite.com, а в итоге, работая с локалхостом, ломитесь на shop_slug.com. Т.е. работаете с доменом не 3-го уровня, а 2-го. Но, в целом это не важно - на локалхосте можно и все запросы перехватить, надо только джанге сказать, что именно она должна слушать. Там в комментах предложили свой днс поднять и это верно - по-другому wildcard локальный домен указать не выйдет. И думается мне, что с дев-сервером такой конфиг работать не будет все-равно.

Во-вторых, а вы уверены, что это хорошая идея? Мне кажется таким перенаправлением должен nginx заниматься, а не джанга.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы