2009-10-25 14 views
10

Próbuję włączyć tłumiony adres URL w Django formularza, którego używa SO: example.com/id/slug. Nie mam problemu z włączaniem wtyczek i mam obecnie skonfigurowane URL-e formularza: http://127.0.0.1:8000/articles/id/ (np./Articles/1 /) i to działa dobrze. Odpowiadająca dopiero później wzorzec adresu to:Włącza osierocone adresy URL w Django

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

Jeśli zmienić wzorzec URL do:

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

Potem otrzymaliśmy następującą eror kiedy przejdź do http://127.0.0.1:8000/articles/another-article/:

The current URL, articles/another-article/, didn't match any of these.

Jeżeli jednak Próbuję:

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

pojawia się błąd:

No article found matching the query

Docelowo chcę być w stanie poruszać się do aricle przez albo:

http://127.0.0.1:8000/articles/1/ or http://127.0.0.1:8000/articles/1/another-article/

Odpowiedz

25

powinienem był tylko trochę więcej pacjenta przed tym pytaniem, bo zorientowali na odpowiedź:

(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), 

pierwszego wzoru umożliwia URL formularza/Artykuły/1 /, co oznacza, że ​​drugi URLPATTERN (w tym pocisk) jest opcjonalny.

+0

Tak, brakowało Ci dopasowania wzorca regex dla rzeczywistego ślimaka. –