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 }}
не передается в шаблон.
Что я делаю неправильно?
Ответы
Ответ 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