Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Django模板中显示无字段错误_Django_Validation_Templates_Django Forms_Django Errors - Fatal编程技术网

在Django模板中显示无字段错误

在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

我想在模板中显示我的非字段。到目前为止,我可以使用以下工具显示我表格中的各种错误:

->base.html

{% 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)