Как внедрить django-tailwind в django rendered forms для полей ввода?

У меня следующая форма:

<form class="form" method="post" action=".">
            {% csrf_token %}
            <div class="error-wrapper">
                <div class="errors">{{ form.errors }}</div>
            </div>
            <div class="email-wrapper field-wrapper">
                <div class="tag name-tag">{{ form.username.label }}*</div>

                <!-- How to apply tailwind css classes to the rendered input field here? -->
                <div class="input rounded-lg">{{ form.username }}</div>
            </div>
            ...
        </form>
# forms.py

class SignUpForm(UserCreationForm):
    first_name = forms.CharField(max_length=30, required=True)
    last_name = forms.CharField(max_length=30, required=True)
    email = forms.EmailField(max_length=254, help_text='Required. Inform a valid email address.')

    class Meta:
        model = User
        fields = ('username', 'first_name', 'last_name', 'email', 'password1', 'password2')

Теперь я хочу применить классы tailwind к полю input, которое отображается {{ form.username }}.

Но как в принципе это сделать? Есть ли способ применить классы к элементу, кроме как изменить класс самой формы?

Я настроил его следующим образом, что, однако, не является желаемым решением:

class SignUpForm(UserCreationForm):

    tailwind_class = """w-full border-2 border-ch-gray-light 
        bg-ch-gray-dark rounded-lg 
        focus:outline-ch-green-light focus:outline-0 
        focus:outline-offset-0 focus:border-2 
        focus:border-woys-purple focus:shadow-none 
        focus:ring-0 focus:shadow-0"
        """

    email = forms.EmailField(required=True, widget=forms.EmailInput(attrs={
        'class': tailwind_class
    }))

    password1 = forms.CharField(widget=forms.PasswordInput(attrs={'class': tailwind_class}))
    password2 = forms.CharField(widget=forms.PasswordInput(attrs={'class': tailwind_class}))

    class Meta:
        model = User
        fields = ('email', 'password1', 'password2')
Вернуться на верх