2009-10-25 13 views
10

I sluggified URLs in Django von der Form, die so verwendet, damit ich versuche: example.com/id/slug. Ich habe kein Problem damit Schnecken und haben URLs zur Zeit des Formulars ein: http://127.0.0.1:8000/articles/id/ (. ZB/articles/1 /) und das funktioniert gut. Die entsprechenden urlPattern sind:Aktivieren sluggified URLs in Django

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

Wenn ich die URL-Muster zu ändern:

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

Dann erhalte ich die folgende eror, wenn ich zu http://127.0.0.1:8000/articles/another-article/ navigieren:

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

Wenn jedoch Ich versuche:

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

ich den Fehler:

No article found matching the query

schließlich über zu einem Aricle zu navigieren Ich möchte in der Lage sein, entweder:

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

Antwort

25

ich sollte nur ein wenig mehr Geduld gehabt haben, bevor diese Frage, weil ich dachte, aus der Antwort:

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

das erste Muster URLs die Form erlaubt/articles/1 /, was bedeutet, dass die zweiten URLPATTERN (um den Pfropfen zu umfassen) ist optional.

+0

ja, fehlten Sie die RegexMuster Spiel für die eigentliche Schnecke. –