在Django模板中显示无字段错误
我想在模板中显示我的非字段。到目前为止,我可以使用以下工具显示我表格中的各种错误: ->base.html在Django模板中显示无字段错误,django,validation,templates,django-forms,django-errors,Django,Validation,Templates,Django Forms,Django Errors,我想在模板中显示我的非字段。到目前为止,我可以使用以下工具显示我表格中的各种错误: ->base.html {% if form.errors %} {% for field in form %} {% if field.errors %} <div class="ui-state-error ui-corner-all notification" > <p> <span class
{% if form.errors %}
{% for field in form %}
{% if field.errors %}
<div class="ui-state-error ui-corner-all notification" >
<p>
<span class="ui-icon ui-icon-alert"></span>
{{ field.label_tag }}:{{ field.errors|striptags }}
<a class="hide" onClick="hideBar(this)">hide</a>
</p>
</div>
{% endif %}
{% endfor%}
{% endif %}
我添加了一个新表单,它只有一个整数字段:
class MerchantForm(forms.ModelForm):
price = forms.IntegerField(widget=forms.TextInput(attrs={'class':'small'}))
def clean_price(self):
price = self.cleaned_data.get('price')
if price == 120:
raise forms.ValidationError('error blah.')
return price
当我发布价格为120时,我的页面中没有任何验证错误
我的看法是:
def bid(request,product_slug):
.
.
form = MerchantForm()
context = RequestContext(request,{
'form':form,
....
})
if request.method == 'POST':
form = MerchantForm(request.POST)
if form.is_valid():
return HttpResponse('ok')
# else:
# return HttpResponse(form.errors.get('__all__'))
return render_to_response('bid.html',context_instance=context)
我可以用注释行检索错误,但我不想在views.py中这样做。有什么想法吗 哦,亲爱的
首先,当您发布的代码片段在clean\u price
中明显出现错误,因此与price
字段关联时,您为什么要询问non\u field\u errors
其次,您的视图代码是颠倒的。创建一个空表单实例,并将其添加到上下文中。然后创建另一个表单实例,绑定到POST数据,但不要将其放入上下文中。因此,模板永远看不到绑定表单,因此很自然,您在模板中永远看不到任何验证错误
def bid(request,product_slug):
.
.
form = MerchantForm()
context = RequestContext(request,{
'form':form,
....
})
if request.method == 'POST':
form = MerchantForm(request.POST)
if form.is_valid():
return HttpResponse('ok')
# else:
# return HttpResponse(form.errors.get('__all__'))
return render_to_response('bid.html',context_instance=context)