web-dev-qa-db-ja.com

Django:ファイル全体に広がるルートから始まる複数のURLパターン

標準のURLパターンを複数のファイル(この場合はプロジェクト全体のurls.pyといくつかのアプリ固有のurls.py)に分散させることが可能かどうか疑問に思っています。

プロジェクトurls.pyが次のようになっていると想像してください(これが機能するようになりました)。

from Django.conf.urls import patterns, include, url
admin.autodiscover()

urlpatterns = patterns('',
    url(r'^user/signup/', 'registration.views.signup'),
    url(r'^user/confirm/(?P<code>\w{20})/', 'registration.views.confirm'),
    url(r'^user/profile/(\d+)/', 'profile.views.show'),
    url(r'^user/profile/edit/', 'profile.views.edit'), 
)

ご覧のとおり、2つの異なるアプリがあり、どちらも/ user/*のURLを使用したいので、r'^user/'をインクルードとともに使用することはできません。

私の質問は、上記を2つの別々のurls.pyファイルに分割して、それぞれをそれぞれのアプリに入れることはできますか?

注:これが入力されたため、構文の間違いは無視してください

19
Christian P.

承知しました。 URLは順番に処理され、2つのインクルードに同じプレフィックスを付けることができます。一方が一致しなかった場合、処理は次のインクルードに移ります。

urlpatterns = patterns('',
    url(r'^user/', include('registration.urls')),
    url(r'^user/', include('profile.urls')),
)
35
Daniel Roseman

また、次のような名前空間を追加することをお勧めします。

urlpatterns = patterns('',
    url(r'^user/', include('registration.urls', namespace="registration")),
    url(r'^user/', include('profile.urls', namespace="profile")),
)
6
iDevFS