Django | 動的なサイト作成、変数、パスパラメータ
- 2022.10.07
- 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
↓言葉としてはおかしいですが・・・
-
前の記事
Django | urlディスパッチャ、View作成 2022.10.07
-
次の記事
Django | ログインフォーム ~Djangoでログインを実装してみる 2023.08.19