有没有一种方法可以使用表单在Django的html元素中添加类?

时间:2019-10-18 03:59:14

标签: django class django-forms

我想在模板中添加一个 class 属性,但是我的代码不起作用。

我已经尝试过Stackoverflow的其他答案,但是这些都不适合我。

class LoginForm(forms.ModelForm):
    class Meta:
        model = User
        fields = ['username','password']

    def __init__(self, *args, **kwargs):
        super(LoginForm, self).__init__(*args, **kwargs)
        self.fields['username'].widget = TextInput(attrs={
            'id': 'id_username',
            'class': 'input',
            'placeholder': 'Enter username'})

输出完全没有变化。

2 个答案:

答案 0 :(得分:0)

是的,您可以通过以下链接进行操作:https://docs.djangoproject.com/en/2.2/topics/forms/modelforms/#overriding-the-default-fields

借助小部件,您可以在下面执行此操作。 尝试一下。

from django.forms.widgets import TextInput

您不需要覆盖__init__方法。只需像下面那样修改代码即可。

class LoginForm(forms.ModelForm):
class Meta:
    model = User
    fields = ['username','password']
    widgets = {
        'username': TextInput(attrs={
            'id': 'id_username',
            'class': 'input',
            'placeholder': 'Enter username'
        })
    }

答案 1 :(得分:0)

您可以在init表单中添加所需的类。

    class LoginForm(forms.ModelForm):
        class Meta:
            model = User
            fields = ['username','password']

        def __init__(self, *args, **kwargs):
            super().__init__(*args, **kwargs)
            for field in self.fields:
                self.fields[field].widget.attrs['class'] = 'form-control'