0

現在、フォームの検証を学習しています。「すべて」が機能しており、空のフィールドのエラーが表示されていますが、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>

再度、感謝します :)

4

1 に答える 1

0

ここではフォームコードは正常に見えますが、ビューを次のように変更する必要があります。

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/

于 2009-08-09T03:05:08.257 に答える