2011-09-12 3 views
0

내 템플릿에 내 non_field_erors를 표시하고 싶습니다. 나는 단지이 새로운 양식을 추가했습니다> 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 %} 

{{ form.non_field_errors }} 

-

: 지금까지, 나는 내 형태의 오류의 모든 종류를 표시 할 수 있습니다 IntegerField :

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에서 그렇게하고 싶지 않아. 어떤 아이디어?

답변

2

오, 이런.

우선, 게시하는 코드 스 니펫이 clean_price에 제기 된 오류가 있으며 따라서 price 필드와 연결되어있을 때 non_field_errors에 대해 묻는 이유는 무엇입니까?

두 번째로,보기 코드가 거꾸로되어 있습니다. 빈 폼 인스턴스를 만들고 컨텍스트에 추가합니다. 그런 다음 양식 인스턴스를 만들고 POST 데이터에 바인딩하지만 컨텍스트에 넣지 마십시오. 따라서 템플릿에는 바인딩 된 양식이 표시되지 않으므로 자연스럽게 템플릿의 유효성 검사 오류가 표시되지 않습니다.