注ジャンゴ - {%URL%}テンプレートタグ

介在物/ _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.yeardate.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=2017date.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%}テンプレートタグを使用している場合しかし、あなたは変更する必要はありません。

おすすめ

転載: www.cnblogs.com/ZJackSparrow/p/11960586.html