Есть ли способ добавить класс в моем элементе HTML в Django, используя формы? - PullRequest
0 голосов
/ 18 октября 2019

Я хочу добавить атрибут 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 голосов
/ 18 октября 2019

Вы можете добавить необходимый класс в форме 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'
0 голосов
/ 18 октября 2019

Да, вы можете сделать это по этой ссылке: 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'
        })
    }
...