• Skip to main content
  • Skip to secondary menu
  • Skip to primary sidebar
  • Skip to footer

AI活用エンジニアへの道

生成AI時代のエンジニアの生き方を考えるメディア(作成途中)

  • コラム
  • 生成AI
  • プログラミング
    • Python入門
    • Flask入門
    • Django入門
  • プロフィール
Home / プログラミング / Django / DjangoのFormの基本~django.forms.Formの利用方法とPOSTメソッドからの値の取り出し

DjangoのFormの基本~django.forms.Formの利用方法とPOSTメソッドからの値の取り出し

1 フォーム用のクラス(form.py)の作成とビュー・テンプレートの定義
2 POSTメソッドで値を取り出す
3 関連記事

DjangoのFormは大変便利な機能を持っている。

ここでは、一番基本となるdjango.forms.Formの利用方法のまとめを記述した。


フォーム用のクラス(form.py)の作成とビュー・テンプレートの定義

  • まず、form.pyをmodels.pyなどと同じ階層に作成して、django.forms.Formを継承したクラスを中に定義する。
# form.py
from django import forms

class FormSample(forms.Form): # django.forms.Formを継承
    name = forms.CharField(required=True) # requiredはフィールドの引数
    email = forms.EmailField()
    age = forms.IntegerField()
    sex = forms.ChoiceField(choices=[
        ('item1', 'man'), ('item2', 'woman')
    ])
    check = forms.BooleanField()

コードに記述した、CharField, EmailField, IntegerField, ChoiceField, BooleanFieldはフィールドと言ってフォームを構成している要素である。

  • 次に、views.pyにてこのFormのオブジェクトを作成してテンプレートに渡す。
# views.py

from django.shortcuts import render
from . import forms

def form_name_view(request):
    form = forms.FormSample() # 定義したFormのオブジェクト作成
    return render(request, 'basicapp/form_page.html', {'form': form}) # 作成したFormのオブジェクトをテンプレートに渡す

  • 最後に、テンプレートでformを表示する。これには、form.as_pを利用するときれいに表示される(as_pについては、こちらの記事を参照)。
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous"> <title>Forms</title>
</head>
<body>
    <h1>Fill out the form!</h1>
    <div class="container">
        <form method="post">
        <!-- actionを付けない場合は、元のviewのfunctionに返す -->
            {{ form.as_p }}
            <!-- formの表示 -->
            {% csrf_token %}
            <!-- クロスサイトリクエストフォージェリ対策、忘れずに -->
            <input type="submit" class="btn btn-primary" value="Submit">
        </form>
    </div>
</body>
</html>

以上、formの画面表示について記述した。
ちなみに画面には以下のように表示される。


POSTメソッドで値を取り出す

  • formで送信した値を取り出すには、簡単でviews.pyにif request.method=='POST':~~で処理を記載すればよい。
# views.py
from django.shortcuts import render
from . import forms

def form_name_view(request):
    form = forms.FormSample()

    if request.method == 'POST': # POSTの時だけ処理する
        form = forms.FormSample(request.POST) # POSTで送信した値をform変数に格納
        if form.is_valid(): # formの値が正当な時(バリデーションチェックを走らせる)
            print(type(form)) # <class 'basicapp.forms.FormSample'>
            print(type(form.data['name']) # 名前に入力した値を取得できる(str)

    return render(request, 'basicapp/form_page.html', {'form': form})

  • formで送信した値を取り出す(記述方法2)
# views.py
from django.shortcuts import render
from . import forms

def form_name_view(request):
    form = forms.FormSample(request.POST or None) # POSTで送信した値をform変数に格納(POSTでない場合は空の値(None)でFormを初期化)
    if form.is_valid(): # formの値が正当な時(バリデーションチェックを走らせる)
        print(type(form)) # <class 'basicapp.forms.FormSample'>
        print(type(form.data['name']) # 名前に入力した値を取得できる(str)

    return render(request, 'basicapp/form_page.html', {'form': form})

以上で、最も基本的なformの使い方について説明を終えます。

関連記事

Pythonの型ヒント:コレクション型とOptional型の使い方
Pythonの型ヒント:コレクション型とOptional型の…
Python型ヒントについて、変数と関数の引数と戻り値に付与する基本的な書き方について
Python型ヒントについて、変数と関数の引数と戻り値に付与…
【まとめ】よく使うLinuxのショートカット11選
【まとめ】よく使うLinuxのショートカット11選
覚えておくべきLinuxコマンド50選
覚えておくべきLinuxコマンド50選
FlaskでFormを用いてPOSTリクエストを行い、送信された値を取得する
FlaskでFormを用いてPOSTリクエストを行い、送信さ…
Flaskでabortを用いてHTTPException例外を強制的に発生させる
Flaskでabortを用いてHTTPException例外…

Primary Sidebar

人気記事

  • 1
    ITエンジニアとしてスキルを高めるためのUdemy講…
  • 2
    PyCharm,IntelliJのおすすめプラグイン一覧
  • no image 3
    Python未経験だが、フリーランスの案件に採用さ…
  • 4
    アメリカのシリコンバレーでプログラミングを無…

特集記事

  • 1
    Cursorの使用のポイントとコツ(コード補完、イ…
  • 2
    ITエンジニアとしてスキルを高めるためのUdemy講…

目次

1 フォーム用のクラス(form.py)の作成とビュー・テンプレートの定義
2 POSTメソッドで値を取り出す
3 関連記事
StartCode ロゴ
AI時代のエンジニアを最速で育てる
法人向けIT研修で即戦力を育成しています。詳しくはお問い合わせください。
▶ 詳細はこちら
Django講座
【Udemy】Django入門講座(0からDjangoを学習: Python講座つき)
受講生6500人ほどの人気講座。<strong>View, Template, Model, Cla...
詳細 ▶

Footer

利用規約