Могу ли я получить элемент HTML в форме Django? - PullRequest
0 голосов
/ 20 марта 2019

У меня есть ModelForm, MyForm. Помогите мне написать метод, который возвращает HTML-элементы для каждого поля, присутствующего в форме.

class MyForm(forms.ModelForm):
    priority = forms.ChoiceField(
        widget=forms.Select(attrs={'class': 'form-control','data-role':'select'}),
        choices=((1,1), (2,2), (3,3), (4,4)),
        required=True,
        initial='3',
        label=_('Priority'),
        help_text=_("Please select a priority carefully. If unsure, leave it as '3'."),
    )

    due_date = forms.DateTimeField(
        widget=forms.TextInput(attrs={'class': 'form-control','data-role':'datepicker'}),
        required=False,
    )

    def getFormHtml(self):
        #need to return a dictionary with the key being the form field name and value being the HTML tag for the respective element 

Ответы [ 2 ]

0 голосов
/ 20 марта 2019

При отправке вы получаете значения полей, используя атрибут «name» элемента. Вы можете получить метод формы (post / get), но html-тег не попадет в представление.

0 голосов
/ 20 марта 2019
my_form = MyForm()

В django есть встроенный способ рендеринга формы. Вы также можете получить рендеринг формы по умолчанию в виде, подобном этому:

my_form.as_p()

или

myform_as_table()

, чтобы вы могли расширить свой объект MyForm, чтобы иметь метод, который возвращает форму в виде html из данного экземпляра формы:

class MyForm(forms.ModelForm):
    priority = forms.ChoiceField(
        widget=forms.Select(attrs={'class': 'form-control','data-role':'select'}),
        choices=((1,1), (2,2), (3,3), (4,4)),
        required=True,
        initial='3',
        label=_('Priority'),
        help_text=_("Please select a priority carefully. If unsure, leave it as '3'."),
    )

    due_date = forms.DateTimeField(
        widget=forms.TextInput(attrs={'class': 'form-control','data-role':'datepicker'}),
        required=False,
    )
    def getFormHtml(self):
        return self.as_table()

конечно, это будет иметь смысл, только если вам нужен html формы вдругой взгляд.Если вам нужен html формы в шаблоне, вы можете получить форму в шаблоне, добавив {{my_form.as_table}} в шаблон или визуализировать поля формы вручную в шаблоне

...