2009-10-25 17 views
10

DjangoでSOが使用する形式のURLを無効にしようとしています:example.com/id/slug。 私はスラッグを有効にしても問題はなく、URLは現在http://127.0.0.1:8000/articles/id/(例:/ articles/1 /)の形式で設定されており、うまくいきます。対応URLPATTERNは次のとおりです。Djangoの無効な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/に移動したときにその後、私は、次のERORを受け取る:

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

場合は、しかし、試してみます:

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

私はエラーを取得する:

No article found matching the query

は最終的に私はどちらかを経由してaricleにナビゲートできるようにしたい:

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

答えて

25

私は考え出したので、私はこの質問をする前に、ほんの少しより多くの患者されている必要があります答えアウト:

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

第一パターンは第二URLPATTERNは(スラグを含むように)任意であることを意味するフォーム/物品/ 1 /のURLを可能にします。

+0

ええ、あなたは実際のスラッグのための正規表現のパターンマッチがありませんでした。 –