Django FormView не имеет контекста формы - программирование

Django FormView не имеет контекста формы

При определении производного класса FormView:

class PrefsView(FormView):
    template_name = "prefs.html"
    form_class = MyForm         # What wrong with this?
    def get(self,request):
        context = self.get_context_data()
        context['pagetitle'] = 'My special Title'
        context['form'] = MyForm    # Why Do I have to write this?
        return render(self.request,self.template_name,context)

Я ожидал, что строка context['form'] = MyForm не нужна, поскольку form_class определена, но без нее {{ form }} не передается в шаблон.
Что я делаю неправильно?

4b9b3361

Ответ 1

В контексте form должна быть инстанцированная форма, а не класс формы. Определение form_class полностью отделено от включения созданной формы в контексте данных.

В примере, который вы указали, я думаю, что вам лучше переопределить get_context_data вместо get.

def get_context_data(self, **kwargs):
    context = super(PrefsView, self).get_context_data(**kwargs)
    context['pagetitle'] = 'My special Title'
    return context