• 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の基本的な使い方~画面上に表示して、viewへ値を送信する~

DjangoでのFormの基本的な使い方~画面上に表示して、viewへ値を送信する~

1 DjangoのFormの作成方法
2 Formから送信したPOSTリクエストをViewで処理する
3 関連記事


DjangoのFormの作成方法

DjangoでFormを利用する場合、django.forms.Formを継承したクラスを作成し、パラメータを設定する。

  • forms.py(フォームの作成)
from django import forms

class MyForm(forms.Form):
    name = forms.CharField()
    email = forms.EmailField()
    text = forms.CharField(widget=forms.Textarea)

次に、viewに定義した関数で、上で作成したformのオブジェクトを作り、renderで、テンプレートに渡す。

  • views.py(Viewの記述)
from django.shortcuts import render
from app.models import Topic,Webpage,AccessRecord
from .forms import MyForm

def form_view(request):
    form = MyForm() # MyFormインスタンスの作成
    return render(request, 'firstapp/form_page.html', {'form': form}) # renderでformインスタンスを渡す

  • urls.py(URLマッピング)
from django.urls import path
from app import views

urlpatterns = [
    path('form_page', views.form_view)
]

次に、テンプレートのhtmlファイル上で{{ form.as_p }}としてフォームを表示する。

  • テンプレートにフォームを表示

<h1>Fill out the form!</h1>
<div class="container">
    <form method="post">
        {{ form.as_p }}
        <!-- form.as_pとして整形されたformが表示されます -->
        {% csrf_token %}
        <!-- CSRF(クロスサイトスクリプティング対策用のパラメータです) -->
        <input class="btn btn-primary" type="submit" value="Submit" />
    </form>

</div>


Formから送信したPOSTリクエストをViewで処理する

djangoを立ち上げてみると以下のような画面が表示される

Formで送信したデータをビューの中で処理するには、以下のように送信先のviewの関数で「if request.method == 'POST':」のようにして、ifの中で処理を定義します

  • POSTリクエストをViewで処理する

from django.shortcuts import render
from . import forms

def form_name_view(request):
    form = forms.FormName()
    # POST処理の場合はifの中を実行
    if request.method == 'POST':
        form = forms.FormName(request.POST) # formで送信された値を取得

        if form.is_valid(): # フォームのバリデーション
            # 値をそれぞれ取り出す
            print("VALIDATION SUCCESS")
            print("NAME: " + form.cleaned_data['name'])
            print("EMAIL: " + form.cleaned_data['email'])
            print("TEXT: " + form.cleaned_data['text'])

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

  • POSTリクエストをViewで処理する(スマートな書き方)
from django.shortcuts import render
from . import forms

def form_name_view(request):
    form = forms.FormName(request.POST or None) # formで送信された値を取得。POSTでない場合はNoneで初期化する

    if form.is_valid(): # フォームのバリデーション
        # 値をそれぞれ取り出す
        print("VALIDATION SUCCESS")
        print("NAME: " + form.cleaned_data['name'])
        print("EMAIL: " + form.cleaned_data['email'])
        print("TEXT: " + form.cleaned_data['text'])

    return render(request, 'basicapp/form_page.html', {'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 DjangoのFormの作成方法
2 Formから送信したPOSTリクエストをViewで処理する
3 関連記事
StartCode ロゴ
AI時代のエンジニアを最速で育てる
法人向けIT研修で即戦力を育成しています。詳しくはお問い合わせください。
▶ 詳細はこちら
Django講座
【Udemy】Django入門講座(0からDjangoを学習: Python講座つき)
受講生6500人ほどの人気講座。<strong>View, Template, Model, Cla...
詳細 ▶

Footer

利用規約