Python | Django | Viewに値を渡し,テンプレートを利用したページ遷移方法

2021年6月24日

公開日:2021/6/24

Pythonには,DjangoというWebアプリケーションフレームワークがある.フレームワークのため,Djangoを利用するとWebアプリを通常よりも短時間で開発することが可能になる.

前記事にて,テンプレートを利用したページ遷移方法を記した.前記事での設定をそのまま引き継いだ上で,本記事では,「Viewに値を渡し,テンプレートを利用したページ遷移方法」を記す.

◆実施環境

Python 3.8.8
Django 3.2.3

■View(views.py)に値を渡し,テンプレートを利用したページ遷移方法

“tmp_project/templates"に"home.html"を作成する."tmp_project"全体の構成は以下のようになる.

“tmp_project/templates/chocolate.html"を以下のように編集する.前回の記事では"index"を利用した箇所を"home"に変更し,以下2つの変数を追加した.

choco_name = 'Pocky’
choco_maker = 'Glico’

<a href="{% url 'tmp_app:home' choco_name='Pocky' choco_maker='Glico' %}">home</a>

“tmp_app/urls.py"に"home"の"path"を追記する."urls.py"全体の内容は以下のようになる.

from django.urls import path
from . import views

app_name = 'tmp_app'

urlpatterns = [
  path('',views.index,name='index'),
  path('home/<choco_name>/<choco_maker>',views.home,name='home'), # 追記箇所
  path('sub1',views.sub1,name='sub1'),
  path('sub2',views.sub2,name='sub2'),
  path('chocolate',views.chocolate,name='chocolate')
]

“tmp_app/views.py"に以下home関数を追記する.

def home(request, choco_name, choco_maker):
  msg = f'Hello {choco_name} and {choco_maker} from Home'

  return render(request,'home.html',context={'msg':msg})

“tmp_project/templates/home.html"には以下のみ記述する.

{{ msg }}

ターミナルを開き,”conda activate 仮想環境名”を実行し,仮想環境に移行する.”tmp_project”のディレクトリで”python manage.py runserver”を実行すると,以下が出力される.

System check identified no issues (0 silenced).
June 24, 2021 - 17:56:27
Django version 3.2.3, using settings 'tmp_project.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CTRL-BREAK.

“http://127.0.0.1:8000/”をクリックし,ブラウザを開くと以下のように表示される.

ブラウザのURLに”http://127.0.0.1:8000/template_app/chocolate”を入力し,ブラウザを開くと,”chocolate.html”に記述した内容が以下のように出力される.以下”home”をクリックする.

上記の”home”をクリックすると,”http://127.0.0.1:8000/template_app/home/Pocky/Glico”に遷移する."chocolate.html"で設定した2つの変数(“choco_name", “choco_maker")の値である"Pocky"と"Glico"がブラウザに出力され,URLにも利用されている.

以上