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

naming page and linkDjango

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

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

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

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

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

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

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

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

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

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

【著者プロフィール】

profile_icon
【Python歴】11年 x 【Django歴】10年
HP作成、社内システムの構築、コンサルティング

当ブログを通じて、Webアプリの書き方やアプリの公開方法までを解説しています。

☆日報アプリ「D-Repo」(デモ版)→こちら

※Djangoをベースに作成したアプリです。

☆便利ツールアプリ「Tool Station」→こちら

※Django REST frameworkとReactで作成しているアプリです。

✔YouTube解説動画

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

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

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

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

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

✔当ブログは以下のような方に向けて書かれています

「Djangoでのアプリ開発を学びたい!」

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

✔当ブログ掲載の記事

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

ITCブログにご協力いただける方は、以下もご検討いただけると嬉しいです。

ITCへ投げ銭をする

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