Django=には、ファイルurls.py
にurlpatterns
の2つの形式があります。
urlpatterns = [
url(...),
url(...),
]
そして
urlpatterns = pattern('',
url(...),
url(...),
)
最初はurl
インスタンスのリストであり、2番目は空の文字列といくつかのpattern
インスタンスをパラメーターとして使用してurl
モジュールを呼び出します。
Django 1.8+では、urlpatternsは単にurl()
sのリストでなければなりません。この新しい構文は実際には1.7でも機能します。
urlpatterns = [
url(...),
url(...),
]
pattern
非推奨 in Django 1.8を使用し、Django 1.10で削除されました。
urlpatterns = pattern('',
url(...),
url(...),
)
古い構文では、プレフィックスを指定できます。 ドキュメント内 の例は
urlpatterns = patterns('news.views',
url(r'^articles/([0-9]{4})/$', 'year_archive'),
url(r'^articles/([0-9]{4})/([0-9]{2})/$', 'month_archive'),
url(r'^articles/([0-9]{4})/([0-9]{2})/([0-9]+)/$', 'article_detail'),
)
ただし、ビューに文字列引数を使用することも非推奨になったため、代わりにcallableを提供する必要があります。
ドキュメント 、patterns
ごと:
プレフィックスと任意の数のURLパターンを取り、Django needs。の形式でURLパターンのリストを返す関数。
patterns()
の最初の引数は、文字列prefix
です。
また、使用する理由の例を示します。
from Django.conf.urls import patterns, url urlpatterns = patterns('', url(r'^articles/([0-9]{4})/$', 'news.views.year_archive'), url(r'^articles/([0-9]{4})/([0-9]{2})/$', 'news.views.month_archive'), url(r'^articles/([0-9]{4})/([0-9]{2})/([0-9]+)/$', 'news.views.article_detail'), )
この例では、各ビューには共通の接頭辞
'news.views'
があります。urlpatterns
のエントリごとに入力する代わりに、patterns()
関数の最初の引数を使用して、各ビュー関数に適用するプレフィックスを指定できます。これを念頭に置いて、上記の例をより簡潔に次のように書くことができます。
from Django.conf.urls import patterns, url urlpatterns = patterns('news.views', url(r'^articles/([0-9]{4})/$', 'year_archive'), url(r'^articles/([0-9]{4})/([0-9]{2})/$', 'month_archive'), url(r'^articles/([0-9]{4})/([0-9]{2})/([0-9]+)/$', 'article_detail'), )
ただし、この関数は廃止されることに注意してください。
バージョン1.8から非推奨:
urlpatterns
は、代わりにDjango.conf.urls.url()
インスタンスの単純なリストでなければなりません。
理由の説明 には以下が含まれることに注意してください(明確な理由があります!):
したがって、
patterns()
はほとんど目的を果たさず、新しいユーザーに教えるときに負担になります(初心者の質問に答える"なぜpatterns()
?の最初の引数としてこの空の文字列が必要なのですか?)。