前回の続きで、Djangoについて学んでいきます。
今回はテンプレートについて、もう少し勉強していきます。
Djangoの勉強内容は以下の本を参考にしています。
参考
Python Django3超入門 (日本語) 単行本 – 2020/6/13 掌田 津耶乃 (著)
コードは以前の記事を参考にしてください。
複数ページを移動する
前回の記事で簡単なテンプレートを作成しました。
テンプレートでは、単一ページだけではなく複数ページを表示することができるので、それをやってみます。
同じテンプレートを使って別のページに移動してみます。
1.index.htmlに以下のコードを追加します。
ファイル:sample_app>hello>templates>hello>index.html
コード:
<!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <title>{{ title }}</title> </head> <body> <h1>{{ title }}</h1> <p>{{ msg }}</p> <p><a href ="{% url page %}">{{ page }}</a></p> #追加 </body> </html>
次のコードを追加しました。
<p><a href ="{% url page%}">{{ page }}</a></p>
aタグを使ってリンクを作成しています。
aタグが不明な場合は、ここを見てください。
{% url page%}の部分はDjangoでリンクを使うときの書き方です。
詳細はurls.pyのところで書きます。
2.views.pyに追記する
続いてリンク先の処理をviews.pyに追記します。
ファイル:sample_app>hello>views.py
コード:
from django.shortcuts import render from django.http import HttpResponse def index(request): params = { 'title': 'Hello World!!', 'msg': 'これはサンプルページです。', 'page': 'index', #追加 } return render(request, 'hello/index.html', params)
#以下を追加---------
def next(request): params = { 'title': 'Hello Nextページ', 'msg': 'これはNextページです。', 'page': 'next', } return render(request, 'hello/index.html', params)
ここでは、index関数のparamsにnext用の変数を追加し、next関数を新規で準備しました。
3.urls.pyに追記する
最後にnextページ用のURLを準備します。
ファイル:sample_app>hello>urls.py
コード:
from django.urls import path from . import views urlpatterns = [ path('',views.index, name='index'), path('next/',views.next, name='next'), #追加 ]
このコードでは、nextページ用のpathを追加しています。
URLに「next」があった場合に、views.pyのnext関数を呼び出します。
以上で設定は終わりです。
index.htmlのところで出てきた「<a href =”{% url page%}”>{{ page }}</a>」についてですが、Djangoではリンク先のページを指定するときに「{% url リンク先の名前 %}」にします。
その時のリンク先の名前が、urls.pyのpathで設定している、「name」になります。
今回の場合だと、「page」という変数を指定しているので、indexページの場合は「next」が代入され、リンク先が「{% url ‘next’ %}」となり、nextページの場合は、「index」が代入され、リンク先が「{% url ‘index’ %}」となり、それぞれのページを行き来することができます。
動作確認してみます。
動作確認
python manage.py runserver
ブラウザで以下にアクセスします。
http://localhost:8000/helloまずは、indexのページが表示され、nextページへのリンクがあります。
このnextページへのリンクをクリックします。
ちゃんとnextページに移動することができました。
今回のテンプレートを使ったページ間の移動は完成しました。
以上です。ありがとうございました。
P.S.
勉強を継続することが苦手ですか?
少し前からココナラというサービスで習慣化のテクニックについて教えるサービスを始めました。
もし、いつも3日坊主で終わってしまうという方や、ダイエットを続けたい、勉強したい、運動したいなど何か習慣化したいと思っている方がいましたら全力でサポートしますので、まずは覗いてみてください。
すでに何人かの方に実践してもらって効果が出ているという感想をいただいてます。
コメント