Я пытаюсь заставить мои ссылки работать в Django. Все URL работают при вводе, но я не могу понять внутреннюю навигацию. Все они имеют формат app.com/storename/pagename, поэтому, если я нахожусь на app.com/shoestore/products и нажимаю на местоположение, я должен перейти на app.com/shoestore/location. Я теряю часть обувного магазина.

Вот примерное представление:

def homepage(request, store_subdomain):
    store_db, store_products = database_selector(store_subdomain)
    return render_to_response('base.html', 
            {'store_name': store_db.name, 'store_subdomain':store_subdomain})

Мой urls.py:

Urlpatterns = Patterns ('',

url(r'^admin/', include(admin.site.urls)),
url(r'^(?P<store_subdomain>\w+)/$', homepage),
url(r'^(?P<store_subdomain>\w+)/products/$', products),
url(r'^(?P<store_subdomain>\w+)/shoppingcart/$', shoppingcart),
url(r'^(?P<store_subdomain>\w+)/checkout/$', checkout),
url(r'^static/(?P<path>.*)$', 'django.views.static.serve',
    {'document_root': settings.STATIC_ROOT}),
url(r'^media/(?P<path>.*)$', 'django.views.static.serve',
             {'document_root': settings.MEDIA_ROOT}),

)

И мой тег навигации:

<li><a href = "/">Home</a></li>
<li><a href = "/products/"}>Products</a></li> 
<li><a href = "/location/">Location</a></li>
<li><a href="mailto:{{store_db.email}}">Email Us</a> </li>
1
thumbtackthief 25 Янв 2013 в 20:00

3 ответа

Лучший ответ

Используйте именованные шаблоны URL.

url(r'^(?P<store_subdomain>\w+)/$', homepage, name='home')

<li><a href="{% url home store_subdomain %}">Home</a></li>
3
rxdazn 25 Янв 2013 в 16:29

url(r'^(?P<store_subdomain>\w+)/$', 'homepage', name='homepage'),

<a href="{% url home store_subdomain=value %}">Home</a>
1
Stéphane Bruckert 17 Июл 2014 в 15:47

Здесь нет магии. Вы написали корневые ссылки в навигации. в этом случае я бы предложил использовать функцию reverse () из urlresolvers django.

0
oleg.foreigner 25 Янв 2013 в 16:11