Fixed #24643 -- Added get_context_data() method to FormMixin
This commit is contained in:
parent
a37dcfd0a3
commit
8a1824d465
|
@ -112,7 +112,14 @@ class FormMixin(six.with_metaclass(FormMixinBase, ContextMixin)):
|
||||||
If the form is invalid, re-render the context data with the
|
If the form is invalid, re-render the context data with the
|
||||||
data-filled form and errors.
|
data-filled form and errors.
|
||||||
"""
|
"""
|
||||||
return self.render_to_response(self.get_context_data(form=form))
|
return self.render_to_response(self.get_context_data())
|
||||||
|
|
||||||
|
def get_context_data(self, **kwargs):
|
||||||
|
"""
|
||||||
|
Insert the form into the context dict.
|
||||||
|
"""
|
||||||
|
kwargs.setdefault('form', self.get_form())
|
||||||
|
return super(FormMixin, self).get_context_data(**kwargs)
|
||||||
|
|
||||||
|
|
||||||
class ModelFormMixin(FormMixin, SingleObjectMixin):
|
class ModelFormMixin(FormMixin, SingleObjectMixin):
|
||||||
|
@ -202,8 +209,7 @@ class ProcessFormView(View):
|
||||||
"""
|
"""
|
||||||
Handles GET requests and instantiates a blank version of the form.
|
Handles GET requests and instantiates a blank version of the form.
|
||||||
"""
|
"""
|
||||||
form = self.get_form()
|
return self.render_to_response(self.get_context_data())
|
||||||
return self.render_to_response(self.get_context_data(form=form))
|
|
||||||
|
|
||||||
def post(self, request, *args, **kwargs):
|
def post(self, request, *args, **kwargs):
|
||||||
"""
|
"""
|
||||||
|
|
|
@ -168,7 +168,7 @@ FormView
|
||||||
* :meth:`~django.views.generic.edit.FormMixin.form_invalid`
|
* :meth:`~django.views.generic.edit.FormMixin.form_invalid`
|
||||||
* :meth:`~django.views.generic.edit.FormMixin.form_valid`
|
* :meth:`~django.views.generic.edit.FormMixin.form_valid`
|
||||||
* :meth:`~django.views.generic.edit.ProcessFormView.get`
|
* :meth:`~django.views.generic.edit.ProcessFormView.get`
|
||||||
* :meth:`~django.views.generic.base.ContextMixin.get_context_data`
|
* :meth:`~django.views.generic.edit.FormMixin.get_context_data`
|
||||||
* :meth:`~django.views.generic.edit.FormMixin.get_form`
|
* :meth:`~django.views.generic.edit.FormMixin.get_form`
|
||||||
* :meth:`~django.views.generic.edit.FormMixin.get_form_kwargs`
|
* :meth:`~django.views.generic.edit.FormMixin.get_form_kwargs`
|
||||||
* :meth:`~django.views.generic.base.View.http_method_not_allowed`
|
* :meth:`~django.views.generic.base.View.http_method_not_allowed`
|
||||||
|
@ -207,7 +207,7 @@ CreateView
|
||||||
* :meth:`~django.views.generic.edit.FormMixin.form_invalid`
|
* :meth:`~django.views.generic.edit.FormMixin.form_invalid`
|
||||||
* :meth:`~django.views.generic.edit.ModelFormMixin.form_valid`
|
* :meth:`~django.views.generic.edit.ModelFormMixin.form_valid`
|
||||||
* :meth:`~django.views.generic.edit.ProcessFormView.get`
|
* :meth:`~django.views.generic.edit.ProcessFormView.get`
|
||||||
* :meth:`~django.views.generic.base.ContextMixin.get_context_data`
|
* :meth:`~django.views.generic.edit.FormMixin.get_context_data`
|
||||||
* :meth:`~django.views.generic.edit.FormMixin.get_form`
|
* :meth:`~django.views.generic.edit.FormMixin.get_form`
|
||||||
* :meth:`~django.views.generic.edit.ModelFormMixin.get_form_kwargs`
|
* :meth:`~django.views.generic.edit.ModelFormMixin.get_form_kwargs`
|
||||||
* :meth:`~django.views.generic.detail.SingleObjectMixin.get_object`
|
* :meth:`~django.views.generic.detail.SingleObjectMixin.get_object`
|
||||||
|
@ -249,7 +249,7 @@ UpdateView
|
||||||
* :meth:`~django.views.generic.edit.FormMixin.form_invalid`
|
* :meth:`~django.views.generic.edit.FormMixin.form_invalid`
|
||||||
* :meth:`~django.views.generic.edit.ModelFormMixin.form_valid`
|
* :meth:`~django.views.generic.edit.ModelFormMixin.form_valid`
|
||||||
* :meth:`~django.views.generic.edit.ProcessFormView.get`
|
* :meth:`~django.views.generic.edit.ProcessFormView.get`
|
||||||
* :meth:`~django.views.generic.base.ContextMixin.get_context_data`
|
* :meth:`~django.views.generic.edit.FormMixin.get_context_data`
|
||||||
* :meth:`~django.views.generic.edit.FormMixin.get_form`
|
* :meth:`~django.views.generic.edit.FormMixin.get_form`
|
||||||
* :meth:`~django.views.generic.edit.ModelFormMixin.get_form_kwargs`
|
* :meth:`~django.views.generic.edit.ModelFormMixin.get_form_kwargs`
|
||||||
* :meth:`~django.views.generic.detail.SingleObjectMixin.get_object`
|
* :meth:`~django.views.generic.detail.SingleObjectMixin.get_object`
|
||||||
|
|
|
@ -91,6 +91,13 @@ FormMixin
|
||||||
|
|
||||||
Renders a response, providing the invalid form as context.
|
Renders a response, providing the invalid form as context.
|
||||||
|
|
||||||
|
.. method:: get_context_data(**kwargs)
|
||||||
|
|
||||||
|
.. versionadded:: 1.9
|
||||||
|
|
||||||
|
Calls :meth:`get_form` and adds the result to the context data with the
|
||||||
|
name 'form'.
|
||||||
|
|
||||||
ModelFormMixin
|
ModelFormMixin
|
||||||
--------------
|
--------------
|
||||||
|
|
||||||
|
@ -214,8 +221,13 @@ ProcessFormView
|
||||||
|
|
||||||
.. method:: get(request, *args, **kwargs)
|
.. method:: get(request, *args, **kwargs)
|
||||||
|
|
||||||
Constructs a form, then renders a response using a context that
|
Renders a response using a context created with
|
||||||
contains that form.
|
:meth:`~django.views.generic.edit.FormMixin.get_context_data`.
|
||||||
|
|
||||||
|
.. versionchanged:: 1.9
|
||||||
|
|
||||||
|
Construction of the form was moved from this method to
|
||||||
|
:meth:`~django.views.generic.edit.FormMixin.get_context_data`.
|
||||||
|
|
||||||
.. method:: post(request, *args, **kwargs)
|
.. method:: post(request, *args, **kwargs)
|
||||||
|
|
||||||
|
|
|
@ -407,6 +407,13 @@ Miscellaneous
|
||||||
* ``CommaSeparatedIntegerField`` validation has been refined to forbid values
|
* ``CommaSeparatedIntegerField`` validation has been refined to forbid values
|
||||||
like ``','``, ``',1'``, and ``'1,,2'``.
|
like ``','``, ``',1'``, and ``'1,,2'``.
|
||||||
|
|
||||||
|
* Form initialization was moved from the :meth:`ProcessFormView.get()
|
||||||
|
<django.views.generic.edit.ProcessFormView.get>` method to the new
|
||||||
|
:meth:`FormMixin.get_context_data()
|
||||||
|
<django.views.generic.edit.FormMixin.get_context_data>` method. This may be
|
||||||
|
backwards incompatible if you have overridden the ``get_context_data()``
|
||||||
|
method without calling ``super()``.
|
||||||
|
|
||||||
.. _deprecated-features-1.9:
|
.. _deprecated-features-1.9:
|
||||||
|
|
||||||
Features deprecated in 1.9
|
Features deprecated in 1.9
|
||||||
|
|
|
@ -81,6 +81,13 @@ class FormMixinTests(TestCase):
|
||||||
MissingDefaultValue().get_form(), forms.Form,
|
MissingDefaultValue().get_form(), forms.Form,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
def test_get_context_data(self):
|
||||||
|
class FormContext(FormMixin):
|
||||||
|
request = RequestFactory().get('/')
|
||||||
|
form_class = forms.Form
|
||||||
|
|
||||||
|
self.assertIsInstance(FormContext().get_context_data()['form'], forms.Form)
|
||||||
|
|
||||||
|
|
||||||
@override_settings(ROOT_URLCONF='generic_views.urls')
|
@override_settings(ROOT_URLCONF='generic_views.urls')
|
||||||
class BasicFormTests(TestCase):
|
class BasicFormTests(TestCase):
|
||||||
|
|
Loading…
Reference in New Issue