The following mixins are used to construct Django’s editing views:
django.views.generic.edit.FormMixin
django.views.generic.edit.ModelFormMixin
django.views.generic.edit.ProcessFormView
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.
Mixins
Methods and Attributes
initial
A dictionary containing initial data for the form.
form_class
The form class to instantiate.
success_url
The URL to redirect to when the form is successfully processed.
prefix
The prefix
for the generated form.
get_initial()
Retrieve initial data for the form. By default, returns a copy of initial
.
get_form_class()
Retrieve the form class to instantiate. By default form_class
.
get_form(form_class=None)
Instantiate an instance of form_class
using get_form_kwargs()
. If form_class
isn’t provided get_form_class()
will be used.
The form_class
argument is not required anymore.
get_form_kwargs()
Build the keyword arguments required to instantiate the form.
The initial
argument is set to get_initial()
. If the request is a POST
or PUT
, the request data (request.POST
and request.FILES
) will also be provided.
get_success_url()
Determine the URL to redirect to when the form is successfully validated. Returns success_url
by default.
form_valid(form)
Redirects to get_success_url()
.
form_invalid(form)
Renders a response, providing the invalid form as context.
get_context_data(**kwargs)
Calls get_form()
and adds the result to the context data with the name ‘form’.
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 SingleObjectMixin
, instances of this mixin have access to the model
and queryset
attributes, describing the type of object that the ModelForm
is manipulating.
If you specify both the fields
and form_class
attributes, an ImproperlyConfigured
exception will be raised.
Previously if both fields
and form_class
were specified, fields
was silently ignored.
Mixins
Methods and Attributes
model
A model class. Can be explicitly provided, otherwise will be determined by examining self.object
or queryset
.
fields
A list of names of fields. This is interpreted the same way as the Meta.fields
attribute of ModelForm
.
This is a required attribute if you are generating the form class automatically (e.g. using model
). Omitting this attribute will result in an ImproperlyConfigured
exception.
Previously, omitting this attribute was allowed and resulted in a form with all fields of the model.
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}/"
to redirect to a URL composed out of the slug
field on a model.
Support for the new brace-based Python formatting syntax has been added. The old %(slug)s
placeholder syntax support has been deprecated and will be removed in Django 1.10.
get_form_class()
Retrieve the form class to instantiate. If form_class
is provided, that class will be used. Otherwise, a ModelForm
will be instantiated using the model associated with the queryset
, or with the model
, depending on which attribute is provided.
get_form_kwargs()
Add the current instance (self.object
) to the standard get_form_kwargs()
.
get_success_url()
Determine the URL to redirect to when the form is successfully validated. Returns django.views.generic.edit.ModelFormMixin.success_url
if it is provided; otherwise, attempts to use the get_absolute_url()
of the object.
form_valid(form)
Saves the form instance, sets the current object for the view, and redirects to get_success_url()
.
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 django.views.generic.base.View
, but breaks if used independently, so it is more of a mixin.
Extends
Methods and Attributes
get(request, *args, **kwargs)
Renders a response using a context created with get_context_data()
.
Construction of the form was moved from this method to get_context_data()
.
post(request, *args, **kwargs)
Constructs a form, checks the form for validity, and handles it accordingly.
put(*args, **kwargs)
The PUT
action is also handled and just passes all parameters through to post()
.
DeletionMixin
class django.views.generic.edit.DeletionMixin
Enables handling of the DELETE
http action.
Methods and Attributes
success_url
The url to redirect to when the nominated object has been successfully deleted.
success_url
may contain dictionary string formatting, which will be interpolated against the object’s field attributes. For example, you could use success_url="/parent/{parent_id}/"
to redirect to a URL composed out of the parent_id
field on a model.
Support for the new brace-based Python formatting syntax has been added. The old %(slug)s
placeholder syntax support has been deprecated and will be removed in Django 1.10.
get_success_url()
Returns the url to redirect to when the nominated object has been successfully deleted. Returns success_url
by default.
© Django Software Foundation and individual contributors
Licensed under the BSD License.
https://docs.djangoproject.com/en/1.9/ref/class-based-views/mixins-editing/