Django | 動的なサイト作成、変数、パスパラメータ

Django | 動的なサイト作成、変数、パスパラメータ

今回は変数を扱って、変数の値をViewに連携する方法を検証します。

変数の宣言

前回の記事内で紹介した render関数(views.py)を一部変更します。

1)views.pyの変更

まずはviews.pyを変更します。

コード

コードは以下の通りです。

from django.shortcuts import render

def hello(request):
	# render(request, htmlファイル , コンテキスト)
	# コンテキストは「辞書型」で宣言する
	# ex {"Name":"Mike"}

	#return render(request, "hello.html") ←変更前
	return render(request, "hello.html", {"Name":"Mile"} ) # ←変更後

2)htmlファイルの修正

views.pyから渡される引数が反映できるように変更します。

html側でコンテキストを表示するには、

{{ コンテキストキー }} 

と記載します。

コード

コードは以下の通りです。

<!DOCTYPE html>
<html>
<head></head>
<body>
  <p>Hello {{Name}}!</p>
</body>
</html>

実行結果

変数を反映することができました。

パスパラメータ

例えばですが、

http://xxxx/app0001/Mile → Hello Mile!

http://xxxx/app0001/Ken → Hello Ken!

といった使い方ができます。

1)urls.pyの変更

パスパラメータだけあって、パス情報を処理する「urls.py」で処理を行います。

 文字列の場合: path(“<slug:変数名>”, view名)

 数値の場合: path(“<int:変数名>”, view名)

コード

コードは以下の通りです。

↓ app0001\urls.py

from django.urls import path
from .views import hello,hello_path,calc_path # ← viewsにて hello_pathを追加

urlpatterns = [
    path("", hello),
    path("name/<slug:Name>", hello_path), # ←新規
    path("calc/<int:Param1>/<int:Param2>", calc_path), # ←新規

]

↓views.py

from django.shortcuts import render

def hello(request):
	return render(request, "hello.html", {"Name":"Mike"} ) 

def hello_path(request,Name):
	return render(request, "hello.html", {"Name":Name} ) # ←追加

def calc_path(request,Param1,Param2):
	return render(request, "hello.html", {"Name":Param1 + Param2} ) # ←追加

実行結果

変数を反映することができました。

http://127.0.0.1:8000/app0001/name/Kaori

http://127.0.0.1:8000/app0001/calc/100/40

↓言葉としてはおかしいですが・・・