DjangoでFormを使っていると、Formにクラス名を設定することが必要な場合がある。
クラス名の設定方法はは、複数あるが、代表的なものとしてwidgetを使ったクラス名の設定方法がある。
widgetを使ったクラス名の設定方法
widgetを使ったクラス名の設定は、forms.pyのModelFormのMetaクラスに以下のように、widget = {'field': forms.TextInput等(attrs={'class': 'class名'})}とするだけでできる。
- forms.py
from blog.models import Post, Comment
class PostForm(forms.ModelForm):
class Meta():
model = Post
fields = ('author', 'title', 'text')
widgets = {
'title': forms.TextInput(attrs={'class': 'textinputclass'}),
'text': forms.Textarea(attrs={'class': 'editable'})
# cssクラスの追加(titleにtextinputclass, textにeditableクラスが追加されるようになる)
}
これだけで、PostFormを画面上に表示した場合に、titleとtextのフィールドに対してそれぞれtextinputclassとeditableクラスが付与されるようになる。