【问题标题】:How to pass form fields into 'templated' HTML file如何将表单字段传递到“模板化”HTML文件中
【发布时间】:2019-05-30 10:11:17
【问题描述】:

我想在不更改显示的情况下使用 Django 表单从预构建的 HTML 模板中获取表单数据。

我知道我可以使用类似的东西:

name = request.POST.get('first_name')

但想使用 ModelForm 处理数据

forms.py

class BioDataForm(forms.ModelForm):

    first_name = forms.CharField(max_length=100, label='first_name')
    last_name =forms.CharField(max_length=100, label='last_name')
    mobile = forms.CharField(max_length=100, label='mobile_number')
    email = forms.EmailField(max_length=100, label='personal_email')
    gender = forms.CharField(max_length=100, widget=forms.Select(attrs={'class': 'form-control', 'id': 'gender'}))
    marital_status = forms.CharField(max_length=100, widget=forms.Select(attrs={'class': 'form-control', 'id': 'marital_status'}))
    date_of_birth = forms.DateField(input_formats=['%Y-%m-%d'], widget=forms.SelectDateWidget())
    address = forms.CharField(max_length=100)

    class Meta:
        model = BioData
        exclude = ('state',)
        fields = ['first_name', 'last_name', 'mobile', 'email',
                'gender', 'marital_status', 'date_of_birth', 'address']

示例 HTML

<div class="row form-group">
   <div class="col-md-6 col-sm-12 margin-bottom-20-m">
       <label for="first_name" class="form-control-label kt-black-text">First Name</label>
       <input type="text" class="form-control" id="first_name" name="e_first_name" required>
   </div>
   <div class="col-md-6 col-sm-12">
       <label for="last_name" class="form-control-label kt-black-text">Last Name</label>
       <input type="text" class="form-control" id="last_name" name="e_last_name" required>
   </div>
</div>

【问题讨论】:

  • 您可以将input 标签替换为{{form.field_name}}。例如,{{ form.first_name }} 而不是 乙>。此外,将小部件类添加到表单字段以确保输入字段按需要显示。

标签: html django python-3.x


【解决方案1】:

在模板中迭代表单:

<div class="row form-group">
   {% for field in form %}
   <div class="col-md-6 col-sm-12 margin-bottom-20-m">
       <label for="{{ field.id_for_label }}" class="form-control-label kt-black-text">{{ field.label }}</label>
       {{ field }}
   </div>
   {% endfor %}
</div>

【讨论】:

    猜你喜欢
    • 2021-06-27
    • 2018-09-28
    • 1970-01-01
    • 1970-01-01
    • 2021-05-25
    • 1970-01-01
    • 2021-05-20
    • 2010-12-17
    • 2019-09-09
    相关资源
    最近更新 更多