DjangoのフォームのフィールドにCSSクラスを適用させる

こんにちは。Djangoのフォームのフィールド(CharFieldなど)に、CSSクラスを適用したくなることってありますよね。今回はその方法をとりあえず書いてみたいと思います。

例えばこういうフォームがあったとします。

from django import forms 

class TestForm(forms.Form): 
    name = forms.charField(max_length=30) 
    email = forms.EmailField()

この、nameというフィールドに、.name_fieldというCSSクラスを適用したい場合は、以下のようにします。

from django import forms 

class TestForm(forms.Form): 
    name = forms.charField(max_length=30) 
    email = forms.EmailField() 

    def __init__(self): 
        super().__init__(*args, **kwargs)
        self.fields['name'].widget.attrs["class"] = "name_field"

また、すべてのタグに対して適用させたい場合は、

for field in self.fields.values(): 
    field.widget.attrs["class"] = 'name_field'

などようにすれば適用できます。

バグ、コメントなどあれば是非いただければと思います。

Back to Top