libro
www.tuyano.com
初心者のためのDjango 2.0入門

インタラクティブな値のやり取り (4/4)

作成:2017-12-23 09:05
更新:2017-12-23 09:05

■送信されたフォームの処理

では、フォームの処理を作成しましょう。今回は、index.htmlの表示も、フォーム送信されたあとの処理も、どちらもindex関数で行います。

では、「hello」内のviews.pyの中に記述したindex関数を下のリスト欄のように修正して下さい。そして、/helloにアクセスして、現れたフォームから送信してみましょう。名前を書いて送ると、「こんにちは、○○さん。」と表示されます。

index関数では、まず送信されたリクエストがGETかPOSTかをチェックしています。
if request.method == 'POST':

request.methodは、アクセスのメソッドを示すものです。この値が 'POST' ならば、POST送信(すなわち、フォームが送信された状態)であることがわかります。

では、フォーム送信した場合、送られてきた値はどうやって取り出しているのでしょうか。
name_str = request.POST['name']

POST送信されたフォームの値は、request.POSTの中にまとめられています。クエリーパラメータを取り出すときにrequest.GETから値を取り出しましたが、あれとまったく同じ感覚で、POST送信の場合はrequest.POSTから値を取り出すのですね。

後は、取り出した値を処理するだけです。そうそう、テンプレート側では、<input>valuecurrent_nameという値を設定していましたね。ですから、テンプレート側に送る値(context変数にまとめたもの)にこのcurrent_nameを用意しておくのを忘れないようにしましょう。

※プログラムリストが表示されない場合

AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。

●プログラム・リスト●

def index(request):
    if request.method == 'POST':
        name_str = request.POST['name']
    else:
        name_str = 'noname'
    
    context = {
        'current_name': name_str,
        'msg': 'こんにちは、 ' + name_str + 'さん。',
    }
    return render(request, 'hello/index.html', context)

※関連コンテンツ

「初心者のためのDjango 2.0入門」に戻る