2015-08-31 4 views
2

Неверная форма, описанная ниже. А выражение {{ search_id_form.errors }} ничего не показывает. Django шаблон:Форма Django недопустима без ошибок

 <form method="POST"> 
      {% csrf_token %} 
      {{ search_id_form.idtype.label_tag }} 
      {{ search_id_form.idtype }} 
      {{ search_id_form.index.label_tag }} 
      {{ search_id_form.index }}<br> 
      <input type="submit" name="id_search_button" value="Submit"> 
     </form> 

класс Python:

class IDSearchForm(forms.Form): 

    idtype = forms.ChoiceField(
     choices=[('idx', 'Our Database ID'), ('uprot', 'UniProt'), ('ncbi', 'NCBI')], 
     initial='idx', 
     widget=forms.RadioSelect, 
     label="Which identifier to use:" 
     ) 

    index = forms.CharField(label="Identifier:") 

Вид:

def search(request): 
    if request.method == 'POST': 

     # handling other forms ... 

     # find a toxin by id 
     if 'id_search_button' in request.POST: 
      search_id_form = IDSearchForm() 
      if search_id_form.is_valid(): 
       idtype = search_id_form.cleaned_data['idtype'] 
       index = search_id_form.cleaned_data['index'] 
       return render(request, 'ctxdb/result_ctx.html', { 
        # here I try to use predefined object to pass to renderer (for debugging) 
        'ctx': get_object_or_404(CTX, idx='21') 
        }) 

      # handling other forms ... 

    # other forms 
    search_id_form = IDSearchForm() 
    # other forms 

    return render(request, 'ctxdb/search.html', { 
     # other forms 
     'search_id_form': search_id_form, 
     # other forms 
     }) 

В функции зрения я обрабатывать четыре различных форм на одной странице. Другие формы работают правильно. В чем проблема?

+1

Покажите нам свой вид, а также то, что в request.POST после его представления. – beezz

ответ

1

При звонке .is_valid, вам необходимо передать данные в search_id_form, которого вы не используете.

Изменить

search_id_form = IDSearchForm() 

в

search_id_form = IDSearchForm(request.POST) 
Смежные вопросы