Python Django Get Post
今回はDjangoでGetとPostをやってみます。テンプレートで作成したソースをベースにするので、先にそちらでソースを準備して下さい。
Getパラメータの取得
Getパラメータを取得してHTMLに表示しみます。テンプレートに使用したviews.pyを修正します。
hello/views.py
from django.shortcuts import render
def index(request):
message = request.GET.get("prm", "World")
dic = {"msg": message}
return render(request, "test.html", dic)
Getパラメータ:prmを取得します。prmが指定されなかった場合、デフォルト値:Worldを使用します。
取得したパラメータはmsgをキー指定して、htmlと連携させます。
テンプレートに使用したtest.htmlを修正します。
hello/templates/test.html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>テストページ</title>
</head>
<body>
<h1>Hello {{ msg }} !!</h1>
</body>
</html>
上記までの修正ができたら、Webサーバを起動します。
python manage.py runserver
以下のURLにアクセスします。
http://127.0.0.1:8000/hello/?prm=Me
Htmlファイルが呼び出され、Getパラメータが表示されることを確認します。
Postパラメータの取得
hello/views.py
from django.shortcuts import render
def index(request):
message = request.POST.get("prm", "World")
dic = {"msg": message}
return render(request, 'test.html', dic)
Postパラメータ:prmを取得します。prmが指定されなかった場合、デフォルト値:Worldを使用します。
取得したパラメータはmsgをキー指定して、htmlと連携させます。
hello/templates/test.html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>テストページ</title>
</head>
<body>
<form action="/hello/" method="post">
{% csrf_token %}
<input type="text" name="prm" /><input type="submit" />
</form>
<h1>Hello {{ msg }} !!</h1>
</body>
</html>
以下のURLにアクセスします。
http://127.0.0.1:8000/hello/
テキストボックスに文字を入力してボタンを押すと入力文字がPostで送信されることを確認します。
Post送信時の注意
Post送信時に以下のようなCSRFエラーが出ることがあります。この対応を行うにはDjangoのバージョンによって対応方法が異なるみたいですが、Ver1.11ではHTMLのFormタグ内に {% csrf_token %}を入れることでエラーにならなくなりました。
Forbidden (403)
CSRF verification failed. Request aborted.
Help
Reason given for failure:
CSRF token missing or incorrect.
ページのトップへ戻る