0

现在我正在学习验证表单,“所有”都在工作,我显示了空字段的错误,但我有 2 个问题:

  1. 当另一个字段中有错误时,如何在填充字段中显示值?<input ... value= {{ value }} >问题是我的字段不是 html 表单字段。
  2. 如何在空白字段上准确显示错误?

我怎么有这个:

表格.py

class NuevaDiligenciaForm(forms.Form):
    titulo = forms.CharField(max_length=70)    
    tipo = forms.ChoiceField(choices=TIPO)        
    vias= forms.TypedChoiceField(widget=forms.RadioSelect(), choices=CHOICES)

视图.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))   

模板.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>

再次感谢 :)

4

1 回答 1

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/

于 2009-08-09T03:05:08.257 回答