【発見!】Django リンク先(href)はページ名にしよう!

naming page and linkDjango

(最終更新月:2022年1月)

「ナビゲーションバーを作るので、リンク先はいつも通りURLを書いていこう!」

「aタグ、href=”https….」

と進めようと思っている方、

ちょっと待ってください!

Djangoフレームワークには、もっと便利でオススメな方法があります!

当記事を通じて、

  • URLを直接リンク先に設定しないほうが良い理由
  • Django Webアプリ でリンク先を指定する方法

について徹底的に解説していきます

通常、aタグでリンクを作成するには

<a href="/nippo/create/">Createフォーム</a>

などと、href属性に直接URLを書き込むことでリンクが作成できます

まずは「なぜオススメしないのか?」から見ていきましょう!

リンク先をURLで書かないほうが良い理由

複数ページから一つのページへリンクを貼っている場合リンク先のURLを変更するとどういうことが起きるでしょうか?

ご想像の通り、ページ①、ページ②、ページ③の全てで変更を余儀なくされます

もちろん「この方法しかない!」というのであれば、それも致し方ないのですが、Djangoには各ページへ任意の名前を付けることができ、その名前によりリンク先を指定するという方法が存在します

そのため、リンク先のURLを変更しても、ページ名から正しいURLを見つけることが可能になります

ページ名をつけて、リンク先としておけば、いちいちリンク先を変更する必要がありません

ページに名前をつける

urls.py内の「urlsptterns」でページ名を追加します

urlpatterns = [
  path("", nippoListView, name="nippo-list"),
  path("detail/<int:number>/", nippoDetailView, name="nippo-detail"),
  path("create/", nippoCreateView, name="nippo-create"),
]

【ページ名はname属性を使って指定します】

path("", nippoListView, name="nippo-list"),

ページ名に規則性を持たせておくことをオススメします!

ページ数が増えても規則性があれば思い出すのも比較的カンタンです

aタグでページ名をリンク先に指定

ページ名を使ってリンク先を指定するには、

{% url ‘ページ名’ %}

という「urlタグ」を使います

【使用例】

<a href={% url 'nippo-list' %}>List Page</a>

<a href={% url 'nippo-create' %}>Create Page</a>

ページ名にスペースなどが混ざっているとエラーになってしまいます

エラーが出たときのために頭の片隅に入れておきましょう!

【※URLで「int」や「slug」を受け取る時】

URLパスで、「int」や「slug」を受け取る場合があります

path("detail/<int:number>/", nippoDetailView, name="nippo-detail"),

その際は、urlタグ内に値を入れておく必要があります

{% url ‘ページ名’ URLに入力する値 %}

上記の例のように

<int:number>/

の場合は、

<a href={% url 'nippo-detail' 3 %}>
 Detail Page
</a>

などと記述する必要がありますので、覚えておきましょう!

まとめ

一般的にリンク先の指定として使われる方法は、Djangoフレームワークではオススメしません

ポイントとしては、

  • URLパス内で、nameを指定すること
  • urlタグを使ってリンク先を指定すること

で、URL自体を変更した場合も自動でその変更先URLを見つけてくれます

また、ページ名をつけるにあたっては自分なりのルールを作り、一定の規則により命名すると覚えやすいのでオススメです

次回の記事はいよいよ、HTMLとDjangoの関係から広がって、データベースとの連携に入っていきます

データベース内のデータをリスト化し、ブラウザで表示していく方法をお伝えします

✔月9,800円でWebデザインが学べる

デザナルは、Webデザインに苦手意識がある方におすすめのサブスク型スクールです。

特徴は以下の通り。

  • 初期費用不要
  • 教材が使い放題
  • 案件で収入も得られる

デザナルは稼ぎながら学べる、格安のWebデザインスクールです。

>>詳細はこちら<<

安いWebデザインスクール「デザナル」を徹底分析

当ブログでは、日報アプリ開発を通じて、Webアプリを一から開発し公開するまでを初学者の方でもわかるようにと記事を連載しています

「Djangoでのアプリ開発を学びたい!」
「Djangoで開発したアプリをWebで公開するにはどうするの?」

という方は必見です!

【Django】チュートリアル|日報アプリの開発から公開まで
Djangoのチュートリアルをお探しですか?具体的に「手を動かして作ってみたい!」という方へ向けて、誰でもできる簡易的な日報アプリの開発を通じて、Djangoの様々な機能に触れていくシリーズとなっています。PythonでWebアプリを作りたい方、必見の記事となります!

タイトルとURLをコピーしました