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

※本サイトにはプロモーション・広告が含まれています。

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

✔当記事はこのような方に向けて書かれています

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

「Djangoでaタグを記述したい」

✔当記事を通じてお伝えすること

  • Djangoでのaタグ・リンク先の指定方法
  • URLを直接リンク先に設定しないほうが良い理由

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

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

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

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

✔YouTube解説動画

当記事の内容は動画を見ながら進めると、約15分程度で完了します。

動画ならではの情報も解説しているので、記事と一緒にご覧ください。

動画の概要欄には、単元ごとのコードを紹介しているgithubページも載せています。

✔独学におすすめ

筆者プロフィール

筆者プロフィールアイコン

【現職】プロダクトマネージャー

【副業】ブログ(月間20万PV)/YouTube/Web・アプリ制作

「プログラミング × ライティング × 営業」の経験を活かし、30後半からのIT系職へシフト。現在はプロダクトマネージャーとして、さまざまな関係者の間に入り奮闘してます。当サイトでは、実際に手を動かせるWebアプリの開発を通じて、プログラミングはもちろん、IT職に必要な情報を提供していきます。

【当ブログで紹介しているサイト】

当サイトチュートリアルで作成したデモ版日報アプリ

Django × Reactで開発したツール系Webアプリ

✔人に見せても恥ずかしくないコードを書こう

「リーダブルコード」は、わかりやすく良いコードの定義を教えてくれる本です。

  • 見るからにきれいなコードの書き方
  • コードの分割方法
  • 変数や関数の命名規則

エンジニアのスタンダートとすべき基準を一から解説しています。

何回も読むのに値する本なので、ぜひ手にとって読んでみてください。

リンク先を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の関係から広がって、データベースとの連携に入っていきます

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

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