Python 正在验证具有N个相同属性的表单
我正在尝试使用多个具有相同“name”属性的字段验证表单 第一用户表格:Python 正在验证具有N个相同属性的表单,python,django,forms,validation,Python,Django,Forms,Validation,我正在尝试使用多个具有相同“name”属性的字段验证表单 第一用户表格: class BuyTicketFormEmail(forms.Form): email = forms.EmailField() first_name_customer = forms.CharField(max_length=191) last_name_customer = forms.CharField(max_length=191) 其他用户的表格 class UserForm(forms
class BuyTicketFormEmail(forms.Form):
email = forms.EmailField()
first_name_customer = forms.CharField(max_length=191)
last_name_customer = forms.CharField(max_length=191)
其他用户的表格
class UserForm(forms.Form):
first_name_user = forms.CharField(max_length=191)
last_name_user = forms.CharField(max_length=191)
表格:
客户可以添加多个额外的用户,我不知道确切的数字,都有相同的名字
在HTML中,我只显示一个表单,如何验证此表单?我不在家,我使用智能手机编写了此表单,如果代码不是100%正确,请原谅。但你会得到大线 对于视图:
def add_user(request):
i = 1
n = 5 #change it to the number of users you want
all_users_forms = []
while i < n+1 :
one_user_form = UserForm()
all_users_forms += one_user_form
i += 1
context = {'all_users_forms':all_users_forms}
template = 'form.html' #change it to your template name
return render(request, template, context)
我不知道确切的长度(N),但你的回答帮助我找到了答案,谢谢
names = request.POST.getlist('first_name')
surnames = request.POST.getlist('last_name')
id = 0
for name in names:
data = {
'first_name': name,
'last_name': surnames[id]
}
users_form = self.users_form_class(data)
id += 1
if users_form.is_valid():
f_name = users_form.cleaned_data['first_name']
l_name = users_form.cleaned_data['last_name']
else:
return HttpResponse('String is too long, or containts incorrect characters')
看看django表单集:。这是一个我喜欢的教程:@HenryM我不想保存数据,只想验证它,加上模型有更多的字段,我正在为每个额外的用户生成哈希等等。但是原则都在那里,只是不保存
names = request.POST.getlist('first_name')
surnames = request.POST.getlist('last_name')
id = 0
for name in names:
data = {
'first_name': name,
'last_name': surnames[id]
}
users_form = self.users_form_class(data)
id += 1
if users_form.is_valid():
f_name = users_form.cleaned_data['first_name']
l_name = users_form.cleaned_data['last_name']
else:
return HttpResponse('String is too long, or containts incorrect characters')