Форма недействительна, но ошибок нет

#python #django #django-forms #django-class-based-views #django-crispy-forms

#питон #джанго #джанго-формы #представления на основе классов django #джанго-хрустящие-формы

Вопрос:

Всякий раз, когда я отправляю форму, она недействительна, и к ней не прикреплено сообщение об ошибке, когда я пытаюсь прочитать ее с помощью form.errors; она пуста. Вот что у меня есть:

models.py

 class Project(models.Model):  project = models.CharField(unique=True, max_length=50)  is_active = models.BooleanField(default=False)  

forms.py

 from crispy_forms.bootstrap import FormActions from crispy_forms.helper import FormHelper from crispy_forms.layout import Layout, Row, Column, Submit, Field   class SelectProjectForm(forms.Form):   def __init__(self, active_choices, *args, **kwargs):  super().__init__(*args, **kwargs)  self.fields['is_active'] = forms.ChoiceField(choices=active_choices, widget=forms.Select)  self.helper = FormHelper()  self.helper.form_method = 'post'  self.helper.layout = Layout(  Row(  Column(Field('is_active'))  ),  Row(  Column(FormActions(Submit('activate', 'Activate Project')))  ),  )  

views.py

 class ProjectSettings(LoginRequiredMixin, TemplateView):  template_name = 'Home/project_settings.html'   def get(self, request, *args, **kwargs):  active_choices = []  for project in Project.objects.all():  active_choices.append((project.id, project.project),)   return render(request, self.template_name, {'form': SelectProjectForm(active_choices)})   def post(self, request, *args, **kwargs):  if 'activate' in request.POST:  form = SelectProjectForm(request.POST)   if form.is_valid():  ....   messages.error(request, 'Something went wrong')  return redirect('project_settings')  

project_settings.html:

 lt;divgt;  {% load crispy_forms_tags %}  {% crispy form %} lt;/divgt;  

Я думаю, что проблема может быть в методе POST в представлениях, где я инициализирую форму, но я не знаю, как передать active_choices параметр в post. Если это не проблема, тогда я потерян.

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

1. Покажите нам шаблон страницы, который отображает форму.

2. Извини за это. Я обновил сообщение.

3. В post() , я не вижу, где отображается форма…

4. Есть form = SelectProjectForm(request.POST) во второй строке метода post.

5. Да, но разве не render() должен быть где-нибудь звонок? Я не работал с хрустящими бланками.