介在物/ _archives.html ... {%のための日中 date_list%} <LI> <a href= "{% URL'blog:archive' date.year date.month %}"> {{date.year}}年{{date.month}}月 </a>の </ LI> {%ENDFOR%} ...
ここでは {% url %}
テンプレートタグの役割は、分析ビュー機能で blog:archive
対応するURLパターンは、年と月にURLパターンを置き換え date.year
、date.month
値。
{% url %}
最初のパラメータは、エンドポイントは、コロンで区切られた2つの部分から成り、受信したタグテンプレートは包括ビュー機能を解析されています。アプリケーションurls.pyの最初の部分は、指定された app_name
値(名前空間として機能するので、たとえ異なるアプリ関数名で同じビューは、競合しない)の第二の部分 path
関数渡された name
パラメータ値。例えば、モジュールのurls.pyのブログアプリケーションでは、我々は指定し app_name = 'blog'
、archive
URLパターン機能はビューである path('archives/<int:year>/<int:month>/', views.archive, name='archive')
ため、エンドポイントの対応する値 blog:archive
。
{% url %}
受信したタグテンプレートURLパスパラメータ、キャプチャのパラメータURLパスモード変換器の必要性、すなわち値の他のパラメータ。たとえば、 archive
ビューモードが機能に対応したURLである archives/<int:year>/<int:month>/
、と想定され date.year=2017
、 date.month=5
その後、 {% url 'blog:archive' date.year date.month %}
テンプレートは、ラベル/アーカイブ/ 5分の2017 /から返されます。
なぜ使用{%URL%}テンプレートタグそれ?実際には、我々のハイパーリンクのhref属性がに設定されて /archives/{{ date.year }}/{{ date.month }}/
達成することができ、同じ目的が、そのようなアプローチは、ハードコーディングされています。が、 blog:archive
ビューは、このフォームで対応するURLパターンの関数であるが、いつの日か、このパターンが変更された場合は?あなたはハードコーディングされた文言を使用する場合は、どこでも、あなたはする必要がある /archives/{{ date.year }}/{{ date.month }}/
新しいモデルを変更します。あなたは{%URL%}テンプレートタグを使用している場合しかし、あなたは変更する必要はありません。