我正在试验django forms中提供的表单集。这是forms.py
from django import forms
class NewForm(forms.Form):
username = forms.CharField(max_length=100, label="Username")
email = forms.EmailField(label="email")
city = forms.CharField(label="city")Views.py
from django.shortcuts import render
# Create your views here.
from .forms import NewForm
from django.forms import formset_factory
def formview(request):
if request.method == 'POST':
form = NewForm(request.POST)
if form.is_valid():
username = form.cleaned_data['username']
city = form.cleaned_data['city']
email = form.cleaned_data['email']
print(type(form.cleaned_data))
NewFormSet = formset_factory(NewForm)
formset = NewFormSet()
for form in formset:
print(form)
for k,v in form.cleaned_data.items():
print(k,v)
else:
print("ddd")
form = NewForm()
formset = 0
return render(request, 'form.html', {'form':form,'formset':formset})之前它工作得很好,但问题是当我添加这个表单集代码时,它显示了错误
模板:
<html>
<head>
<title>The Form</title>
</head>
<body>
<form method='POST'>{% csrf_token %}
{% for field in form %}
{{ field.error }}
<br />
{{ field.label }}
{{ field }}
<br />
{% endfor %}
<input type="Submit" value="Submit">
</form>
{% for f in formset %}
<form method='POST'>{% csrf_token %}
{% for field in f %}
{{ f.error }}<br />
{{ f.label }}
{{ f }}
<br />
{% endfor %}
</form>
{% endfor %}
</body>
</html>

请帮帮忙。
发布于 2017-02-21 05:42:50
您需要调用form.is_valid()来清理/验证它,在它没有cleaned_data之前,您还应该考虑重命名循环变量,因为您已经有一个名为form的变量
for newform in formset:
if newform.is_valid():
for k,v in newform.cleaned_data.items():
print(k,v)您还可以在表单集中调用is_valid()来验证表单集中的所有表单:
if formset.is_valid():
for newform in formset:
for k,v in newform.cleaned_data.items():
print(k,v)但请记住,newform在这一点上没有数据,它只是一个空的NewForm。
编辑:
发布于 2017-02-21 14:56:23
问题是
def formview(request):
newformset = formset_factory(NewForm)
if form.is_valid():
formset = newformset(request.POST)
..
...
...
else:
formset = newformset()https://stackoverflow.com/questions/42354337
复制相似问题