トッカンソフトウェア

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.
    
			



ページのトップへ戻る