スポンサーリンク

[Django 2] フォームクラスを使ってフォーム送信

フォームクラスを使ってフォーム送信をしていきます。

フォームクラスの作成

まずは、アプリケーションのフォルダ直下に、

forms.pyを作り、下記のようにフォームクラスを作ります。

from django import forms

class testForm(forms.Form):
    id = forms.IntegerField()
    name = forms.CharField()

 

フォームクラスを使ってフォーム送信

まずはビューの解説です。

indexメソッドでは、フォームクラスのインスタンスを作り、テンプレートに送っています。

 

resultメソッドは、テンプレートから送られたデータを受け取り、その結果を別のテンプレートで画面表示しています。

views.py

from django.http import HttpResponse
from django.shortcuts import render
from testapp.forms import testForm


def index(request):
    test_form = testForm()
    return render(request, 'index.html', {'test_form':test_form})

def result(request):
    # フォーム送信された値を受け取る
    result_id = request.POST.get('id')
    result_num = request.POST.get('name')
    return render(request, 'result.html', {'id': result_id,'name': result_num})

テンプレート側

フォームクラスを使って、

入力フォームをテンプレートで作ります。

index.html

<!DOCTYPE html>
<html>
<head>
    <title>タイトル</title>
</head>
<body>
    {% with test_form as form %}
    <form action="{% url 'testapp:result' %}" method="post">
        {% csrf_token %}
        <div>ID:{{form.id}}</div>
        <div>名前:{{form.name}}</div>
        
        <input type="submit" value="送信">
    </form>
    {% endwith %}
</body>
</html>

そして、結果表示用のテンプレートを作ります。

result.html

結果
ID:{{id}}
名前:{{name}}

実行結果

index.html

result.html

フォームクラスを使ってフォーム送信することができました。