Django 4 を想定し、フォームの基本的な作成方法と、ユーザー入力を処理する方法を解説します。
Django 4 では、フォームを簡単に作成し、ユーザー入力を処理するための仕組みが用意されています。
本記事では、Django におけるフォームの基本的な作成方法と、入力データの処理方法を解説します。
Django のフォームは、django.forms
を活用して、HTML フォームを簡単に生成し、バリデーション(入力チェック)を行うことができます。
✅ フォームのメリット
Django では、forms.py
にフォームクラスを作成し、フォームを定義します。
PYTHONfrom django import forms class ContactForm(forms.Form): name = forms.CharField(label='名前', max_length=100) email = forms.EmailField(label='メールアドレス') message = forms.CharField(label='メッセージ', widget=forms.Textarea)
✅ ポイント
forms.Form
を継承してフォームを作成forms.CharField
や forms.EmailField
でフィールドを定義widget=forms.Textarea
でテキストエリアを指定作成したフォームを views.py
で使用し、テンプレートに表示します。
PYTHONfrom django.shortcuts import render from .forms import ContactForm def contact_view(request): form = ContactForm() return render(request, 'contact.html', {'form': form})
Django のテンプレートでフォームをレンダリングするには、以下のように記述します。
HTML<form method="post"> {% csrf_token %} {{ form.as_p }} <button type="submit">送信</button> </form>
✅ ポイント
{% csrf_token %}
で CSRF 保護を有効化{{ form.as_p }}
で各フィールドを段落 (<p>
) として表示フォームが送信された際に、入力データを処理し、バリデーションを行うには request.POST
を使用します。
PYTHONfrom django.shortcuts import render from .forms import ContactForm def contact_view(request): if request.method == 'POST': form = ContactForm(request.POST) if form.is_valid(): # フォームのデータを取得 name = form.cleaned_data['name'] email = form.cleaned_data['email'] message = form.cleaned_data['message'] # ここでデータを処理(例: メール送信) return render(request, 'success.html') else: form = ContactForm() return render(request, 'contact.html', {'form': form})
✅ ポイント
request.method == 'POST'
でフォーム送信時の処理を判定form.is_valid()
で入力チェックを実施form.cleaned_data
でバリデーション済みデータを取得forms.Form
を使うと、簡単にフォームを作成できる。{% csrf_token %}
を使い、セキュリティ対策を確保。is_valid()
を利用し、バリデーションを実施。回 | タイトル | リンク |
---|---|---|
第 1 回 | Django: フレームワークの概要と特徴 | 詳 細 |
第 2 回 | Django: プロジェクトとアプリの構造 | 詳 細 |
第 3 回 | Django: ルーティングとビューの基本 | 詳 細 |
第 4 回 | Django: テンプレートの使い方 | 詳 細 |
第 5 回 | Django: 静的ファイルの管理 | 詳 細 |
第 6 回 | Django: フォームと入力処理 | この記事 |
第 7 回 | Django: モデルとデータベースの基本 | 詳 細 |
第 8 回 | Django: 管理画面の活用 | 詳 細 |
第 9 回 | Django: ルーティングのルールと優先順位 | 詳 細 |
第 10 回 | Django: クラスベースビュー(CBV) | 詳 細 |
当サイトの情報は、一般的な参考情報として提供しております。
正確な情報の掲載に努めておりますが、その内容の正確性・完全性・最新性を保証するものではありません。
記事の内容をご利用の際は、ご自身の責任において判断し、必要に応じて専門家にご相談ください。
当サイトの情報の利用により生じたいかなる損害についても、一切の責任を負いかねますのでご了承ください。
※ 本ページでは、著作権法に基づき、適正な引用の範囲内でコンテンツを紹介しています。
オリジナルの情報は発信元をご確認ください。
もし問題がありましたら、こちら からお問い合わせください。