私はこのSO postで説明されている複数経路パターンを適用して、DjangoプロジェクトにオプションのURLパターンを含めることを試みています。Django URL複数経路パターンが非注入型
私のurls.py
ファイルには、次のパターンがあります。
urlpatterns = [
url(r'^(?P<slug>[-\w]+)\/?$', View.as_view()),
url(r'^(?P<section>[-\w]+)\/(?P<slug>[-\w]+)\/?$', View.as_view()),
url(r'^(?P<section>[-\w]+)\/(?P<tag>[-\w]+)\/(?P<slug>[-\w]+)\/?$',View.as_view()),
]
パラメータsection
、tag
、及びslug
フィールドをモデルに対応します。したがって、/foo/bar/baz
へのHTTPリクエストは、 "foo"セクション、 "bar"タグ、 "baz" slugのモデルインスタンスを返します。すべてのモデルインスタンスがsection
またはtag
であるとは限りません。これらのパラメータはオプションです。
ドメインのURLとモデルインスタンスのコードドメインを持つ関数としてURLディスパッチャを考えると、私が使用しているパターンは注入関数ではありません。 /baz
,/foo/baz
および/foo/bar/baz
は同じモデルインスタンスを返しますが、最後のURLだけがモデルインスタンスを返す必要があります。
要するに、urlpatterns
は、要求されたURLが/foo/bar/baz
の場合にのみfoo-bar-bazモデルを返すように設定しますか?
なぜあなたは正規表現としてURLを受け入れるのではなく、次に/で分割してやりたいことをやりますか? –