как передать несколько параметров url в django

у меня есть 2 ссылки в моих шаблонах html. Первая ссылка передает только 1 параметр в URL и вторая ссылка передает 2 параметра. Вот так:

<a href="/products/{{categ_name}}">{{categ_name}}</a>
<a href="/products/{{categ_name}}/{{subcateg_name}}">{{subcateg_name}}</a>

Теперь, когда я нажимаю на ссылку с параметром 1, все работает нормально. Я получаю значение параметра в моем представлении django.
но когда я нажимаю на ссылку с двумя параметрами, я только первый параметр. Я вам не в значении второго параметра.

мой urls.py:

urlpatterns = patterns('',
            url(r'^products/(?P<categ_name>\w+)/', views.products, name='products_category'),
            url(r'^products/(?P<categ_name>\w+)/(?P<subcateg_name>\w+)/', views.products, name='products_subcategory'),
            url(r'^logout/',views.logoutView, name='logout'),)

мой views.py:

def products(request, categ_name=None, subcateg_name=None):
    print categ_name, subcateg_name
    ...

как получите значение второго параметра?

1 ответов


изменить URL-адреса:

urlpatterns = patterns('',
            url(r'^products/(?P<categ_name>\w+)/$', views.products, name='products_category'),
            url(r'^products/(?P<categ_name>\w+)/(?P<subcateg_name>\w+)/$', views.products, name='products_subcategory'),
            url(r'^logout/',views.logoutView, name='logout'),)

затем вы избегаете, чтобы Ваш url-адрес 2-параметра соответствовал первому шаблону 1-параметра. Символ $ special означает конец строки.