现在我正在学习验证表单,“all”正在工作,即时显示空字段的错误,但我有两个问题:
<input ... value= {{ value }} >
问题是我的字段不是html表单字段。我是怎么做到的:
form.py
class NuevaDiligenciaForm(forms.Form):
titulo = forms.CharField(max_length=70)
tipo = forms.ChoiceField(choices=TIPO)
vias= forms.TypedChoiceField(widget=forms.RadioSelect(), choices=CHOICES)
view.py
def add(request):
form = NuevaDiligenciaForm()
errors =[]
if request.method =='POST':
if not request.POST.get('titulo',''):
errors.append('Titulo es requerido')
if not request.POST.get('vias',''):
errors.append('Vias es requerido')
#if not errors:
return render_to_response('account/add.html', { 'formulario':form ,'errors':errors},context_instance = RequestContext(request))
template.html
{% if errors %}
<ul>
{% for error in errors %}
<li>{{ error }}</li>
{% endfor %}
</ul>
{% endif %}
{% if message %}
<p style="color: red;">{{ message }}</p>
{% endif %}
<form action='.' method='POST' class="nueva-diligencia">
{{ formulario.as_p }}
<input type="submit" value="Continuar">
</form>
再次感谢:)
答案 0 :(得分:0)
您在此处编写代码看起来不错,但您的视图需要更改为:
def add(request):
if request.method =='POST':
form = NuevaDiligenciaForm(request.POST)
if form.is_valid():
clean_data = form.cleaned_data
# Now do something with the cleaned data...
else:
form = NuevaDiligenciaForm()
return render_to_response('account/add.html', { 'formulario': form }
,您的模板应如下所示:
{% if message %}
<p style="color: red;">{{ message }}</p>
{% endif %}
<form action='.' method='POST' class="nueva-diligencia">
{{ formulario.as_p }}
<input type="submit" value="Continuar">
</form>
现在发生的情况是,如果来自POST的数据不正确,form.is_valid()将失败,并且视图将返回经过验证的表单,其中包含具有它们的字段旁边的错误。 Django在这里为您处理所有错误处理!尝试一下,让我知道它是否按预期工作。
如果你想看看这个简化版本如何更好地运作,这是一个非常好的资源:http://www.djangobook.com/en/2.0/chapter07/