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
注解
Examples of how these are combined into editing views can be found at the documentation on Generic editing views.
FormMixin
Pdjango.views.generic.edit.
FormMixin
PA mixin class that provides facilities for creating and displaying forms.
Mixins
Methods and Attributes
initial
PA dictionary containing initial data for the form.
form_class
PThe form class to instantiate.
success_url
PThe URL to redirect to when the form is successfully processed.
get_form_class
()PRetrieve the form class to instantiate. By default
form_class
.
get_form
(form_class=None)PInstantiate an instance of form_class
using
get_form_kwargs()
.
If form_class
isn't provided get_form_class()
will be used.
get_form_kwargs
()PBuild 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
()PDetermine the URL to redirect to when the form is successfully
validated. Returns
success_url
by default.
form_valid
(form)PRedirects to
get_success_url()
.
form_invalid
(form)PRenders a response, providing the invalid form as context.
get_context_data
(**kwargs)PCalls get_form()
and adds the result to the context data with the
name 'form'.
ModelFormMixin
Pdjango.views.generic.edit.
ModelFormMixin
PA 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.
如果同时指定了 fields
和 form_class
属性,将会引发 ImproperlyConfigured
异常。
Mixins
Methods and Attributes
model
PA model class. Can be explicitly provided, otherwise will be determined
by examining self.object
or
queryset
.
fields
PA 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.
success_url
PThe 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.
get_form_class
()PRetrieve 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
()PAdd the current instance (self.object
) to the standard
get_form_kwargs()
.
get_success_url
()PDetermine 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)PSaves the form instance, sets the current object for the view, and
redirects to
get_success_url()
.
form_invalid
(form)PRenders a response, providing the invalid form as context.
ProcessFormView
Pdjango.views.generic.edit.
ProcessFormView
PA mixin that provides basic HTTP GET and POST workflow.
注解
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)PRenders a response using a context created with
get_context_data()
.
post
(request, *args, **kwargs)PConstructs a form, checks the form for validity, and handles it accordingly.
DeletionMixin
Pdjango.views.generic.edit.
DeletionMixin
PEnables handling of the DELETE
http action.
Methods and Attributes
success_url
PThe 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.
delete
(request, *args, **kwargs)PRetrieves the target object and calls its delete()
method, then
redirects to the success URL.
get_success_url
()PReturns the url to redirect to when the nominated object has been
successfully deleted. Returns
success_url
by
default.
8月 23, 2019