2017-05-16 10 views
1

私はこの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()), 
] 

パラメータsectiontag、及び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モデルを返すように設定しますか?

+0

なぜあなたは正規表現としてURLを受け入れるのではなく、次に/で分割してやりたいことをやりますか? –

答えて

0

私は、これがビューで扱う方がはるかに簡単だと思います。あなたの見解では、私は要求を見て、URIが間違った形式の場合は、正しいURIへのリダイレクトを発行します。これをURLディスパッチャに強制するよりもはるかに簡単です。

+0

あなたは正しいです、私は 'SingleObjectMixin'で' get_object'メソッドを上書きして遊んできました。そして、それは私に望ましい動作を得させるようです。ありがとう! – kas

関連する問題