【发布时间】: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