[Django] {% url %}を理解する

django

Djangoのテンプレートで使うURLタグのまとめです。

備忘録を兼ねて知識の整理に。

DjangoのURLタグとは?

DjangoのURLタグはurls.pyに記載された URLパターンを逆引きする機能です。

アプリケーション直下にurls.pyというファイルがありますがこんな感じのやつ

urlpatterns = [
    path('', views.post_list, name='post_list'),
    path('<int:pk>/', views.post_detail, name='post_detail'),
    path('category/<int:pk>/', views.category, name='category'),
]

ここで記述したURLパターンをテンプレートファイルで呼び出します。

シンプルなブログアプリケーションを例に紹介しますが、例えばブログ記事一覧→記事詳細にリンクを貼る時にurlタグを使うことでリンクを生成します。

{% for post in posts %}
    <div>
        <h2><a href="{% url 'post_detail' pk=post.pk %}">{{ post.title }}</a></h2>
{% endfor %}

‘post_detail’の部分はアプリケーション名/urls.pyに記述されたパス、name=’post_detail’の部分を呼び出しています。

ちょうどこの箇所です。

path('<int:pk>/', views.post_detail, name='post_detail'),

‘<int:pk>’は記事のプライマリキーとなります。

例えば、1のpkの記事であれば、example.com/1となります。

idでも行けますし、記事のタイトルでもOK。日本語をリンクに含めるとぐちゃぐちゃになるのでおすすめしませんが。

 



カテゴリー