Как я могу назначить атрибуты для элементов формы в forms.py без использования класса Meta? - PullRequest
1 голос
/ 26 марта 2019

У меня есть настройка формы Django, например:

from django import forms

class ContactForm(forms.Form):
    full_name = forms.CharField(max_length=20)
    phone = forms.CharField(max_length=20)
    email = forms.CharField(max_length=30)
    message = forms.CharField(max_length=400)

    class Meta:
        fields = ['full_name', 'phone', 'email', 'message']

        widgets = {
        'full_name': forms.TextInput(attrs={'class': 'sizefull s-text7 p-l-22 p-r-22', 'placeholder': 'Full Name'}),
        'phone': forms.TextInput(attrs={'class': 'sizefull s-text7 p-l-22 p-r-22', 'placeholder': 'Phone Number'}),
        'email': forms.TextInput(attrs={'class': 'sizefull s-text7 p-l-22 p-r-22', 'placeholder': 'E-Mail Address'}),
        'message': forms.TextInput(attrs={'class': 'dis-block s-text7 size20 bo4 p-l-22 p-r-22 p-t-13 m-b-20', 'placeholder': 'Message'}),
        }

Который работает нормально. Однако недавно я узнал, что class Meta может использоваться только с ModelForms.

Мне нужно назначить атрибуты, подобные приведенным выше, в моей форме, в forms.py. Я понимаю, что это плохая практика - смешивать бизнес-логику и логику представления, но сейчас я имею дело со сложным платным веб-шаблоном, и методы применения атрибутов с помощью тегов шаблонов пока не работают. Учитывая, что у меня крайний срок, я откладываю назначение атрибутов таким образом, как функцию v2.

У меня вопрос: если класс Meta можно использовать только с формами, имеющими соответствующую модель, как я могу назначить атрибуты виджетам форм в формах, которые не соответствуют модели и, следовательно, не могут использовать класс Meta?

1 Ответ

1 голос
/ 26 марта 2019

Вы можете использовать встроенные виджеты .

. Используется следующий пример:

class CommentForm(forms.Form):
    name = forms.CharField(widget=forms.TextInput(attrs={'class': 'special'}))
    url = forms.URLField()
    comment = forms.CharField(widget=forms.TextInput(attrs={'size': '40'}))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...