Как проверить форму и показать значение заполненных полей? - PullRequest
0 голосов
/ 09 августа 2009

сейчас я учусь проверять форму, "все" работает, я показываю ошибки пустых полей, но у меня есть 2 вопроса:

  1. как плохо показывать значение в заполненных полях, когда есть ошибки в других полях?, Например <input ... value= {{ value }} > проблема в том, что мои поля не являются полями HTML-форм.
  2. как плохо показывать ошибку именно над пустыми полями?

как у меня это:

form.py

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

view.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))   

template.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>

Еще раз спасибо:)

1 Ответ

0 голосов
/ 09 августа 2009

Вы формируете код здесь хорошо, но ваш взгляд должен измениться на это:

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/

...