如何验证表单并显示填充字段的值?

时间:2009-08-09 01:42:51

标签: django django-forms django-validation

现在我正在学习验证表单,“all”正在工作,即时显示空字段的错误,但我有两个问题:

  1. 当其他字段中存在错误时,填充字段中的值如何显示?,例如<input ... value= {{ value }} >问题是我的字段不是html表单字段。
  2. 如何错误地在空字段上显示错误?
  3. 我是怎么做到的:

    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>
    

    再次感谢:)

1 个答案:

答案 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/