djangoでの入力フォームをカスタマイズできるウィジェット。
その使い方について学んでいきましょう。
まずはウィジェットの概要から
一言で言うと、HTMLファイル上での「見た目」をコントロールするのがウィジェットです。
といってもこれだけではよく分かりませんよね。
実際の例をみながら、ウィジェットの理解を深めていきましょう。
フィールドとの関連性は?
ウィジェットを理解するうえでまず押さえておきたいのが、フィールドとの違いです。
例えば、CharFieldをhtmlで表示させるとこのようになります。
テキストボックスが表示されているので、フィールドも見た目をコントロールしていると思ってしまいますよね。
ただ、見た目をコントロールしているのはやはりウィジェットなのです。
どういうことかというと、それぞれのフィールドはデフォルトでウィジェットが設定されているのです。
CharFieldの場合、デフォルトでTextInputウィジェットが設定されています。
ですので、TextInputウィジェットによってテキストボックスが表示されたのです。
CharFieldだけどチェックボックスにしてみる
ここで、ウィジェットを使ってCharFieldの見た目を変えていきましょう。
見た目をチェックボックスにしてみます。
sample = forms.CharField(widget = forms.CheckboxInput)
CharFieldであるにも関わらず、チェックボックスが表示されました。
このように、ウィジェットを使うことで見た目をコントロールできるというとをおさえておきましょう。
補足すると、フィールドは何の役割を持っているのか?と思いますよね。
フィールドは、入力された情報のバリデーションが設定されています。
例えば、Eメールフィールドであれば、アドレスに@が入っているかといったバリデーションが実装されているのです。
ウィジェットは見た目、フィールドはバリデーションと覚えましょう。
ウィジェットの使い方を紹介
ここからはウィジェットの使い方についてみていきましょう。
ウィジェットを使うには、フィールドの後にwidgetを指定します。
先ほど使った例をまた見てみましょう。
sample = forms.CharField(widget = forms.CheckboxInput)
フィールドを指定したあとに、widget=..と書いています。
このように書くことで、ウィジェットを指定することができます。
ウィジェットの種類を紹介
主なウィジェットの種類とHTMLファイル上でのレンダリングのされ方を表にまとめました。
ウィジェットの名前 | レンダリング |
TextInput | <input type="text" ...> |
NumberInput | <input type="number" ...> |
EmailInput | <input type="email" ...> |
URLInput | <input type="url" ...> |
PasswordInput | <input type="password" ...> |
HiddenInput | <input type="hidden" ...> |
DateInput | <input type="text" ...> |
CheckBoxInput | <input type="checkbox" ...> |
Select | <select><option ...><select> |
ウィジェットのまとめ
(1) htmlの見た目をコントロールしているのがウィジェット。
(2) 各フィールド(CharFieldなど)は、デフォルトでウィジェットが設定されている
(3) フィールドの定義で実装されるのはバリデーション。
~Django無料講義~のご案内
Code for Djangoが、4時間超の無料Django講義をはじめました
- ・本を出版したCode for Djangoの 製作者が作ったサイトです。
- ・Code for Djangoの内容も、 動画で詳しく解説しています。
- ・動画は順次ふやしていきますので、 ただで学び続けることが可能です。
- ・Djangoの効率的なスキルアップに、 是非お役立て下さい。