Возникли проблемы с корректной работой слагов в urls.py.

У меня возникла проблема (вероятно, из-за моего отсутствия знаний по этому вопросу) с использованием слагов в моем urls.py.

Urls.py
url(r'^admin/', include(admin.site.urls)),
url(r'^search_form/$', search_form),
url(r'^search/$', search),
url(r'^search_results/$', search_results),
#url(r'^search/search_results/acetic-acid/$', item),
url(r'^(?P<slug>[-\w\d]+),(?P<id>\d+)/$', item),

вот html-ссылка href="search_results/{{chemical.S_field}}/">{{chemical.S_field}}/">{{chemical.Barcode }}, где поле slugchemical.S_field основано на слагифицированной версии имени элемента.

Я пытаюсь создать одну страницу, URL-адрес и представление, которое сможет привести пользователя к шаблону, который будет меняться в зависимости от того, по какой ссылке они щелкнули.

Например, если у вас есть волосатые собаки, мохнатые кошки, пушистые птицы. Если пользователь нажмет на волосатых кошек, слаг будет волосатым котом, и пользователь попадет на страницу (search/search_results/hairy-cats/, которая будет содержать различную информацию о волосатых кошках, которая будет отображаться из базы данных.

Я чувствую, что это возможно, но каждый раз, когда я пытаюсь использовать слаг (возможно, я делаю это неправильно), он отображает ^(?P[-\w\d]+),(?P\d+)/$ в отличие от информации, хранящейся в слаге.

Также есть ли место, где есть учебник или хорошая информация о django, подобная этому? Я ознакомился с учебными пособиями по django на сайте, а также с учебными пособиями по django в Полном руководстве по веб-разработке с Django.

Спасибо,

РЕДАКТИРОВАТЬ Я, возможно, не ясно выразился раньше, должен был выбрать лучший пример. страница, которую я хотел бы отобразить, будет расположена по адресу search/search_results/slug, где slug будет slugified версией имени элемента. Вот что я получаю сейчас с добавлением новейшего URL-адреса

Using the URLconf defined in Inventory.urls, Django tried these URL patterns, in   this order:

^admin/doc/
^admin/
^search_form/$
^search/$
^search_results/$
^(?P<slug>[-\w\d]+),(?P<id>\d+)/$
^(?P<slug>[-\w]+)/(?P<id>\d+)/$

The current URL, search/search_results/acetic-acid/, didn't match any of these.

person user2482595    schedule 26.06.2013    source источник
comment
Я не вижу шаблона URL для желаемого результата (search/search_results/hairy-cats/). Посмотрите здесь, как работают шаблоны URL: https://docs.djangoproject.com/en/dev/topics/http/urls/   -  person Jingo    schedule 26.06.2013


Ответы (2)


Этот шаблон URL недействителен. Подробнее об этом можно прочитать в разделе Именованные группы.

url(r'^(?P<slug>[-\w\d]+),(?P<id>\d+)/$', item)

Пытаться

url(r'^(?P<slug>[-\w\d]+)/$', item)

Поскольку вы пытаетесь сопоставить только слагов.

Если вы хотите иметь возможность сопоставлять либо слаги, либо идентификаторы, вы можете иметь 2 отдельные цели, каждая из которых представляет собой Шаблон именованного URL

url(r'^(?P<id>\d+)/$', item, name='by-id')
url(r'^(?P<slug>[-\w\d]+)/$', item, name='by-slug')
person karthikr    schedule 26.06.2013
comment
Часть проблемы заключалась в том, что у меня был url(r'^(?P‹slug›[-\w\d]+)/$', item), а мне нужен был url(r'^search/(?P‹ слаг›[-\w\d]+)/$', элемент) - person user2482595; 26.06.2013

попробуй это:

url(r'^search/search_results/(?P<slug>[-\w]+)/$', item),

у вас будет такой URL-адрес: search/search_results/acetic-acid/, который будет вызывать элемент функции.

person Below the Radar    schedule 26.06.2013