Editing mixins

以下mixins用于构建Django的编辑视图:

注意

如何将这些组合成编辑视图的示例,请参见Generic editing views的文档。

FormMixin

class django.views.generic.edit.FormMixin

一个mixin类,提供创建和显示表单的功能。

Mixins

方法和属性

initial

包含表单初始数据的字典。

form_class

要实例化的窗体类。

success_url

表单成功处理后重定向到的URL。

prefix

生成的表单的prefix

get_initial()

检索表单的初始数据。默认情况下,返回initial的副本。

get_form_class()

检索要实例化的表单类。默认情况下,form_class

get_form(form_class=None)

使用get_form_kwargs()实例化form_class的实例。如果不提供form_classget_form_class()

在Django 1.8中更改:

不再需要form_class参数。

get_form_kwargs()

构建实例化表单所需的关键字参数。

initial参数设置为get_initial()如果请求是POSTPUT,请求数据(request.POSTrequest.FILES)将也可提供。

get_prefix()

为生成的表单确定prefix默认返回prefix

get_success_url()

确定在表单成功验证后重定向到的网址。默认返回success_url

form_valid(form)

重定向到get_success_url()

form_invalid(form)

呈现响应,提供无效形式作为上下文。

ModelFormMixin

class django.views.generic.edit.ModelFormMixin

一个在ModelForms上工作的表单混合,而不是一个独立的表单。

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.

如果同时指定fieldsform_class属性,则会引发ImproperlyConfigured异常。

在Django 1.8中更改:

以前,如果指定fieldsform_class,则会忽略fields

Mixins

方法和属性

model

模型类。可以明确提供,否则将通过检查self.objectqueryset来确定。

fields

字段名称列表。其解释方式与ModelFormMeta.fields属性相同。

这是一个必需的属性,如果你是自动生成表单类(例如。使用model)。省略此属性将导致ImproperlyConfigured异常。

在Django 1.8中更改:

以前,省略此属性是允许的,并导致一个包含模型的所有字段的表单。

success_url

表单成功处理后重定向到的URL。

success_url可能包含字典字符串格式,它将根据对象的字段属性进行插值。例如,您可以使用success_url="/polls/{slug}/"重定向到模型上slug字段组成的URL。

在Django 1.8中更改:

添加了对新的基于大括号的Python格式化语法的支持。旧的%(slug)s占位符语法支持已弃用,将在Django 2.0中删除。

get_form_class()

检索要实例化的表单类。如果提供form_class,那么将使用该类。否则,将使用与querysetmodel关联的模型实例化ModelForm,具体取决于提供的属性。

get_form_kwargs()

将当前实例(self.object)添加到标准get_form_kwargs()

get_success_url()

确定在表单成功验证后重定向到的网址。如果提供,返回django.views.generic.edit.ModelFormMixin.success_url;否则,尝试使用对象的get_absolute_url()

form_valid(form)

保存表单实例,设置视图的当前对象,然后重定向到get_success_url()

form_invalid()

呈现响应,提供无效形式作为上下文。

ProcessFormView

class django.views.generic.edit.ProcessFormView

一个mixin,提供基本的HTTP GET和POST工作流。

注意

这被命名为“ProcessFormView”,并直接从django.views.generic.base.View继承,但如果独立使用则中断,因此它更多是混合。

延伸

方法和属性

get(request, *args, **kwargs)

构造一个表单,然后使用包含该表单的上下文来呈现响应。

post(request, *args, **kwargs)

构造表单,检查表单的有效性,并相应地处理。

put(*args, **kwargs)

PUT操作也被处理,并且将所有参数传递到post()

DeletionMixin

class django.views.generic.edit.DeletionMixin

启用对DELETE http操作的处理。

方法和属性

success_url

指定对象已成功删除时重定向到的网址。

success_url可能包含字典字符串格式,它将根据对象的字段属性进行插值。例如,您可以使用success_url="/parent/{parent_id}/"重定向到模型上parent_id字段组成的URL。

在Django 1.8中更改:

添加了对新的基于大括号的Python格式化语法的支持。旧的%(slug)s占位符语法支持已弃用,将在Django 2.0中删除。

get_success_url()

返回当指定的对象已成功删除时重定向到的网址。默认返回success_url