проблема с формами django

#python #django #django-forms

#python #django #django-forms

Вопрос:

у меня есть следующая форма django. в котором есть поле выбора. я пытаюсь получить значение, выбранное в radioSelect виджете. я использую метод (cleaned_data) для этой задачи. но по какой-то причине он не может получить доступ к методу cleaned_data.

Значение исключения : 'AnswersForm' object has no attribute 'cleaned_data'

forms.py:

 
class AnswersForm(forms.Form):

        CHOICES=[('sf','asdf')]
        answers = forms.ChoiceField(choices=CHOICES, widget=forms.RadioSelect())

  

и в views.py:

 
    form = forms.AnswersForm()
    form.cleaned_data['answers']
  

кто-нибудь знает, что происходит? или есть другой способ выполнить это?

заранее спасибо

Ответ №1:

Вы не показываете никакого кода, в котором вы передаете данные в форму или проверяете, допустимы ли они. Обычная практика — это что-то вроде:

 if request.method == 'POST':
    form = Forms.AnswersForm(request.POST)
    if form.is_valid():
        do_something_with(form.cleaned_data['answers'])
  

Вы не можете получить доступ cleaned_data , пока не вызовете is_valid()

Комментарии:

1. 1 вы можете получить доступ к cleaned_data только после проверки формы

Ответ №2:

Использование Form.clean() просто возвращает self.cleaned_data

Примечание: Очистите данные в forms.py

 def clean(self,):
  Here you can clean the form.
  

** Для справки ** Перейдите сюда (Django doc)

Комментарии:

1. Form.clean() есть ли способ увеличить обычную чистую функциональность, которая используется внутри при вызове .valid() . Вопрос, похоже, не в проверке формы, а скорее в простом доступе к cleaned_data. вызов clean() — это не способ сделать это.