Django サイト内URLリンクの貼り方

Django URLタグを使用

templates/sample.html

<a href="{% url 'page_name' %}">リンク</a>

urls.py

urlpatterns = [
    path('page-url',  views.page_url, name='page_name'),
]

Django URLタグにパラメータを直接指定

templates/sample.html

<a href="{% url 'param_page' 5 7 %}">リンク</a>

urls.py

urlpatterns = [
    path('param/<int:param01>/<int:param02>',  views.param, name='param_page'),
]

受け取り側views.py

def param(request, param01, param02):
    print(param01)
    print(param02)
# 5
# 7

Django URLタグにパラメータを間接指定

次のようにパラメータをviews.pyから指定して渡すことも可能です。

templates/sample.html

<a href="{% url 'param_page' param01 param02 %}">リンク</a>

受け取り側のurls.pyは同じです。
こちらの方が直接指定よりもいいですね。

Django hrefで直接指定し、URLタグを使用しない(非推奨)

次のように直接指定することも可能です。

templates/sample.html

<a href="/page-url">直接リンク指定</a>

urls.py

urlpatterns = [
    path('page-url',  views.page_url, name='page_name'),
]

しかしこの方法はオススメしません

Django URLタグを使用を使用するメリット

サイトの名称を指定するので、サイト内のページ構成が変わってもリンク先を変更する必要がないからです。

逆にURLタグを使用せずhrefで直接指定した場合、ページ構成が変わってURLが変わると変更が必要になります。
そして何よりも画面遷移が多くなると、URLの階層が深くなり指定する情報が長くなってしまいます。

これらを避ける為にもURLタグを使用した方が、簡単かつ安全です。

コメント