Подтвердить что ты не робот

Включить пропущенные URL-адреса в Django

Я пытаюсь включить пропущенные URL-адреса в Django формы, которая использует SO: example.com/id/slug. У меня нет проблем с использованием slugs, и теперь у вас есть URL-адреса формы: http://127.0.0.1:8000/articles/id/ (например,/articles/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, articles/another-article/не соответствует ни одному из них.

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

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

Я получаю сообщение об ошибке:

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

В конечном счете, я хочу, чтобы иметь возможность перейти к aricle через:

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

4b9b3361

Ответ 1

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

(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-адресам формы /articles/ 1/, что означает, что второй URL-адрес (для включения пули) является необязательным.