Techブログ

Tech blog

Pythonの話

Djangoでバリデーションの実装について

カテゴリ:Pythonの話

2020.08.26

このエントリーをはてなブックマークに追加

こんにちは!伊神です!

今回はDjangoでバリデーション機能を実装する方法をご紹介します。

バリデーション機能を実装するのに、いくつか方法がある中の「form.py」「view.py」で実装しようと思います。

バリデーションとは

バリデーション(validation)とは、「入力チェック」のことです。

「ログイン」や「新規登録」などによく用いられており、「ログイン」なら登録された情報とあっているかどうかをチェックし、「新規登録」だったら入力形式があっているかどうかなどをチェックしています。

バリデーションのことについてわかりやすく解説しているサイトがありましたので、よかったら見てみてください。
▼「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典
https://wa3.i-3-i.info/word11610.html

Djangoの場合どうバリデーションを実装するか

バリデーション機能の実装に今回は

  • 入力チェックの設定値やエラー時のメッセージを記載する「forms.py」
  • バリデーションのチェックをして正常な入力値なら保存処理を行う「views.py」
  • 表示のテンプレートとなる「user.html」

を編集します。

formクラス

sampleapp/forms.py

14行目:
required(必須かどうか)やmax_length(文字の最大の長さ)は、入力フィールドの属性として設定するバリデーションです。

14,16行目:
CharFieldやIntegerFieldなどの入力フィールドの種類によってバリデーションの属性の種類は少し違います。

Fieldについての公式ドキュメント:https://docs.djangoproject.com/ja/2.2/ref/forms/fields/#built-in-field-classes

5,9行目:
独自のバリデーションの関数(check_ageとcheck_email)を作りました。16,17行目の属性にvalidators=[独自バリデーション名]を設定することで独自のバリデーションを呼び出しています。

views.pyとuser.htmlテンプレート

sampleapp/views.py

9行目:
form.is_valid():でバリデーションチェックを行い正常な値だったらログイン画面に遷移し、登録できていない場合は登録画面にリダイレクトする処理を行っています。

sample/templates/user/user.html

13行目:
{{ form.as_p }}と書くと、フォーム内容が全て表示されます。

最後に

今回はバリデーションを実装するのにいくつか方法がある中の「from.py」「views.py」で実装する方法をご紹介しました。

clean()メソッドで、複数のフィールドに対してバリデーションを設定することができる機能があったりと便利な機能がたくさんあるので興味がある方は調べてみて下さい!!

一覧へ戻る

記事をカテゴリから探す