Включить медленные URL-адреса в Django - PullRequest
10 голосов
/ 25 октября 2009

Я пытаюсь включить медленные URL-адреса в Django в форме, которую использует SO: example.com/id/slug. У меня нет проблем с включением слагов, и в настоящее время URL-адреса настроены в виде: http://127.0.0.1:8000/articles/id/ (например, / article / 1 /), и это прекрасно работает. Соответствующий шаблон URL:

(r'^(?P<object_id>\d+)/$',  'django.views.generic.list_detail.object_detail', info_dict),

Если я изменю шаблон URL на:

(r'^(?P<slug>\d+)/$',  'django.views.generic.list_detail.object_detail', info_dict),

Затем я получаю следующее сообщение об ошибке при переходе к http://127.0.0.1:8000/articles/another-article/:

.

Текущий URL, article / another-article /, не соответствует ни одному из них.

Если, однако, я пытаюсь:

http://127.0.0.1:8000/articles/1/

Я получаю ошибку:

Не найдено статей, соответствующих запросу

В конечном итоге я хочу иметь возможность перейти к артерии одним из следующих способов:

http://127.0.0.1:8000/articles/1/ или же http://127.0.0.1:8000/articles/1/another-article/

1 Ответ

25 голосов
/ 25 октября 2009

Я должен был быть немного более терпеливым, прежде чем задавать этот вопрос, потому что я понял ответ:

(r'^(?P<object_id>\d+)/$',  'django.views.generic.list_detail.object_detail', info_dict),
(r'^(?P<object_id>\d+)/(?P<slug>[-\w]+)/$',  'django.views.generic.list_detail.object_detail', info_dict),

Первый шаблон разрешает URL-адреса вида / article / 1 /, что означает, что второй urlpattern (для включения слага) является необязательным.

...