Отображение ни одной ошибки поля в шаблоне Django - PullRequest
0 голосов
/ 12 сентября 2011

Я хочу отобразить мои 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.Есть идеи ?

1 Ответ

2 голосов
/ 12 сентября 2011

О, дорогой.

Прежде всего, почему вы спрашиваете о non_field_errors, когда фрагмент кода, который вы публикуете, явно имеет ошибку, возникающую в clean_price, и, следовательно, связан с этим * 1005?* field?

Во-вторых, ваш код просмотра перевернут.Вы создаете пустой экземпляр формы и добавляете его в контекст.Затем вы создаете другой экземпляр формы, связанный с данными POST, но не помещаете его в контекст.Таким образом, шаблон никогда не видит связанную форму, поэтому, естественно, вы никогда не увидите никаких ошибок проверки в шаблоне.

...