| ============== |
| Editing mixins |
| ============== |
| |
| The following mixins are used to construct Django's editing views: |
| |
| * :class:`django.views.generic.edit.FormMixin` |
| * :class:`django.views.generic.edit.ModelFormMixin` |
| * :class:`django.views.generic.edit.ProcessFormView` |
| * :class:`django.views.generic.edit.DeletionMixin` |
| |
| .. note:: |
| |
| Examples of how these are combined into editing views can be found at |
| the documentation on ``Generic editing views``. |
| |
| FormMixin |
| --------- |
| |
| .. class:: django.views.generic.edit.FormMixin |
| |
| A mixin class that provides facilities for creating and displaying forms. |
| |
| **Methods and Attributes** |
| |
| .. attribute:: initial |
| |
| A dictionary containing initial data for the form. |
| |
| .. attribute:: form_class |
| |
| The form class to instantiate. |
| |
| .. attribute:: success_url |
| |
| The URL to redirect to when the form is successfully processed. |
| |
| .. method:: get_initial() |
| |
| Retrieve initial data for the form. By default, returns a copy of |
| :attr:`~django.views.generic.edit.FormMixin.initial`. |
| |
| .. versionchanged:: 1.4 |
| In Django 1.3, this method was returning the |
| :attr:`~django.views.generic.edit.FormMixin.initial` class variable |
| itself. |
| |
| .. method:: get_form_class() |
| |
| Retrieve the form class to instantiate. By default |
| :attr:`.form_class`. |
| |
| .. method:: get_form(form_class) |
| |
| Instantiate an instance of ``form_class`` using |
| :meth:`~django.views.generic.edit.FormMixin.get_form_kwargs`. |
| |
| .. method:: get_form_kwargs() |
| |
| Build the keyword arguments required to instantiate the form. |
| |
| The ``initial`` argument is set to :meth:`.get_initial`. If the |
| request is a ``POST`` or ``PUT``, the request data (``request.POST`` |
| and ``request.FILES``) will also be provided. |
| |
| .. method:: get_success_url() |
| |
| Determine the URL to redirect to when the form is successfully |
| validated. Returns |
| :attr:`~django.views.generic.edit.FormMixin.success_url` by default. |
| |
| .. method:: form_valid(form) |
| |
| Redirects to |
| :meth:`~django.views.generic.edit.FormMixin.get_success_url`. |
| |
| .. method:: form_invalid(form) |
| |
| Renders a response, providing the invalid form as context. |
| |
| .. method:: get_context_data(**kwargs) |
| |
| Populates a context containing the contents of ``kwargs``. |
| |
| **Context** |
| |
| * ``form``: The form instance that was generated for the view. |
| |
| .. note:: |
| |
| Views mixing ``FormMixin`` must provide an implementation of |
| :meth:`form_valid` and :meth:`form_invalid`. |
| |
| |
| ModelFormMixin |
| -------------- |
| |
| .. class:: django.views.generic.edit.ModelFormMixin |
| |
| A form mixin that works on ``ModelForms``, rather than a standalone form. |
| |
| Since this is a subclass of |
| :class:`~django.views.generic.detail.SingleObjectMixin`, instances of this |
| mixin have access to the |
| :attr:`~django.views.generic.detail.SingleObjectMixin.model` and |
| :attr:`~django.views.generic.detail.SingleObjectMixin.queryset` attributes, |
| describing the type of object that the ``ModelForm`` is manipulating. The |
| view also provides ``self.object``, the instance being manipulated. If the |
| instance is being created, ``self.object`` will be ``None``. |
| |
| **Mixins** |
| |
| * :class:`django.views.generic.edit.FormMixin` |
| * :class:`django.views.generic.detail.SingleObjectMixin` |
| |
| **Methods and Attributes** |
| |
| .. attribute:: model |
| |
| A model class. Can be explicitly provided, otherwise will be determined |
| by examining ``self.object`` or |
| :attr:`~django.views.generic.detail.SingleObjectMixin.queryset`. |
| |
| .. attribute:: success_url |
| |
| The URL to redirect to when the form is successfully processed. |
| |
| ``success_url`` may contain dictionary string formatting, which |
| will be interpolated against the object's field attributes. For |
| example, you could use ``success_url="/polls/%(slug)s/"`` to |
| redirect to a URL composed out of the ``slug`` field on a model. |
| |
| .. method:: get_form_class() |
| |
| Retrieve the form class to instantiate. If |
| :attr:`~django.views.generic.edit.FormMixin.form_class` is provided, |
| that class will be used. Otherwise, a ``ModelForm`` will be |
| instantiated using the model associated with the |
| :attr:`~django.views.generic.detail.SingleObjectMixin.queryset`, or |
| with the :attr:`~django.views.generic.detail.SingleObjectMixin.model`, |
| depending on which attribute is provided. |
| |
| .. method:: get_form_kwargs() |
| |
| Add the current instance (``self.object``) to the standard |
| :meth:`~django.views.generic.edit.FormMixin.get_form_kwargs`. |
| |
| .. method:: get_success_url() |
| |
| Determine the URL to redirect to when the form is successfully |
| validated. Returns |
| :attr:`django.views.generic.edit.ModelFormMixin.success_url` if it is |
| provided; otherwise, attempts to use the ``get_absolute_url()`` of the |
| object. |
| |
| .. method:: form_valid(form) |
| |
| Saves the form instance, sets the current object for the view, and |
| redirects to |
| :meth:`~django.views.generic.edit.FormMixin.get_success_url`. |
| |
| .. method:: form_invalid() |
| |
| Renders a response, providing the invalid form as context. |
| |
| |
| ProcessFormView |
| --------------- |
| |
| .. class:: django.views.generic.edit.ProcessFormView |
| |
| A mixin that provides basic HTTP GET and POST workflow. |
| |
| .. note:: |
| |
| This is named 'ProcessFormView' and inherits directly from |
| :class:`django.views.generic.base.View`, but breaks if used |
| independently, so it is more of a mixin. |
| |
| **Extends** |
| |
| * :class:`django.views.generic.base.View` |
| |
| **Methods and Attributes** |
| |
| .. method:: get(request, *args, **kwargs) |
| |
| Constructs a form, then renders a response using a context that |
| contains that form. |
| |
| .. method:: post(request, *args, **kwargs) |
| |
| Constructs a form, checks the form for validity, and handles it |
| accordingly. |
| |
| .. method:: put(*args, **kwargs) |
| |
| The ``PUT`` action is also handled and just passes all parameters |
| through to :meth:`post`. |
| |
| .. class:: django.views.generic.edit.DeletionMixin |
| |
| Enables handling of the ``DELETE`` http action. |
| |
| **Methods and Attributes** |
| |
| .. attribute:: success_url |
| |
| The url to redirect to when the nominated object has been |
| successfully deleted. |
| |
| .. method:: get_success_url() |
| |
| Returns the url to redirect to when the nominated object has been |
| successfully deleted. Returns |
| :attr:`~django.views.generic.edit.DeletionMixin.success_url` by |
| default. |