【django】 formのcleaned_dataの記述てなに?

スポンサーリンク
Django

本記事はdjangoのformにおいて

ときどきformで使用するcleaned_dataってなに?」と疑問に思われている方に向けて

formで使うcleaned_dataについてどんなものか、使用する場面について解説しました。

意外と便利な「cleaned_data」について、この機会に知ってみてください。

cleaned_dataとは?

cleaned_dataとは、以下の通りです。

formの中で validate された後、つまり検証されてた後に、適切なデータとして確認された後のデータが入る変数がcleaned_dataである。

こんなつらつら書いても分からないですよね。
つまり、フォームの処理で考えるとこんな感じです。

  1. forms.pyでフォームを作成
  2. フォームにデータを入力
  3. 入力データをバリデート(validate)する
    →is_valid()として書かれる
     ここでデータがフォームに適切か判断
  4. 適切だった場合、cleaned_dataに入る

のここです。

ここの4番目で使われる変数が「cleaned_data」です。

cleaned_dataの注意事項

このcleaned_dataはバリデートした後のデータしか入りません。

そのため、注意が必要です。

もし、バリデートしてない場合、cleaned_dataには何も入りません。

また、バリデートして一部が不適切としてはじかれた場合、はじかれた一部のデータはcleaned_dataには入りません。

バリデートしても、はじかれずに適切とされたデータのみcleaned_dataに入ることになります。

cleaned_dataの例

例えば、cleaned_dataを調べる為、forms.pyには以下のフォームが入っているとします。

from django import forms

class TestForm(forms.Form):
    Name = forms.CharField()
    Age = forms.IntegerField()

Nameは文字列を入れるフィールドであり、空白を入れるとFalseが出力されます。

また、Ageは整数を入れるフィールドです。

ここから3つのデータを入れてcleaned_dataがどのような出力を出すかを比較します。

data1 = { "Name" : "John", "Age" : 20}
data2 = { "Name" : "Mike", "Age": "Nodata"}
data3 = { "Name" : "", "Age" : 20}

これらをTestFormに入れてみます。

ここからはインタラクティブモード(対話モード)で進めます。
そのため、以下のコードをターミナル に入力します。

python manage.py shell #インタラクティブへの変更コマンド

インタラクティブになったら、以下のコードを入力します。

その際の出力結果を「 >> 」の後に書いてあります。。

from forms import TestForm

data1 = { "Name" : "John", "Age" : 20}
data2 = { "Name" : "Mike", "Age": "Nodata"}
data3 = { "Name" : "", "Age" : 20}

f1 = TestForm(data1)
f1.is_valid()
>> True
f1.cleaned_data
>>{'Name': 'John', 'Age': 20}

f2 = TestForm(data2)
f2.is_valid()
>> False
f2.cleaned_data
>>{‘Name': 'Mike'}

f3= TestForm(data3)
f3.is_valid()
>> False
f3.cleaned_data
>>{'Age': 20}

data1はバリデート後、Trueを出力し、適切な値がcleaned_dataに入っています

data2はバリデートするとFalseがでてきます。
これはdata2の”age”が適切ではないためです。
そのため、cleaned_dataには”Name”しか入っていません

data3もdata2と同様に、バリデート後は”Name”に適切な値がないためFalseです。
cleaned_dataには”Age”しか入っていません

cleaned_dataのまとめ

それぞれの入力データからcleaned_dataには、バリデート後に適切と判断されたデータが入ります

結論として、cleaned_dataにはformの中で 検証された後
適切なデータとして確認されたデータが入ります。

より勉強するのに必要なdjangoのおすすめ本を以下の記事で紹介しています。

また、スキルアップのために、djangoをスクールで効率よく学びたい人向けに以下の記事がおすすめです。

最近のプログラミングスクールでもdjangoは学べます。
しかも、AIとWebサイトを組み合わせる方法も教えています。

タイトルとURLをコピーしました