Я нашел ответ.
CreateView
наследует метод get
от класса ProcessFormView
и метод get_context_data
от класса FormMixin
.
Как вы можете см. в коде, метод get
возвращает выражение, которое вызывает get_context_data
.
class ProcessFormView(View):
"""Render a form on GET and processes it on POST."""
def get(self, request, *args, **kwargs):
"""Handle GET requests: instantiate a blank version of the form."""
return self.render_to_response(self.get_context_data())
. В свою очередь, get_context_data
добавляет ключевой аргумент с ключом form
, если он еще не присутствует в **kwargs
:
class FormMixin(ContextMixin):
...
def get_context_data(self, **kwargs):
"""Insert the form into the context dict."""
if 'form' not in kwargs:
kwargs['form'] = self.get_form()
return super().get_context_data(**kwargs)
Итак, CreateView
отображает Ответ с контекстом, который имеет ключ формы и значение, указывающее на ModelForm
.