编辑 mixin — Django 文档

来自菜鸟教程
Django/docs/3.2.x/ref/class-based-views/mixins-editing
跳转至:导航、​搜索

编辑混音

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

笔记

通用编辑视图 的文档中可以找到如何将它们组合到编辑视图中的示例。


FormMixin

class django.views.generic.edit.FormMixin

一个混合类,提供用于创建和显示表单的工具。

混合

方法和属性

initial

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

form_class

要实例化的表单类。

success_url

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

prefix

生成的表单的 前缀

get_initial()

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

get_form_class()

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

get_form(form_class=None)

使用 get_form_kwargs() 实例化 form_class 的实例。 如果 form_class 未提供 get_form_class() 将被使用。

get_form_kwargs()

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

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

get_prefix()

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

get_success_url()

确定表单验证成功后要重定向到的 URL。 默认返回 success_url

form_valid(form)

重定向到 get_success_url()

form_invalid(form)

呈现响应,提供无效表单作为上下文。

get_context_data(**kwargs)

调用 get_form() 并将结果添加到名为“form”的上下文数据中。


ModelFormMixin

class django.views.generic.edit.ModelFormMixin

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

由于这是 SingleObjectMixin 的子类,因此该 mixin 的实例可以访问 modelqueryset 属性,描述 [ X191X] 正在操纵。

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

混合

方法和属性

model

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

fields

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

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

success_url

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

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

get_form_class()

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

get_form_kwargs()

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

get_success_url()

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

form_valid(form)

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

form_invalid(form)

呈现响应,提供无效表单作为上下文。


ProcessFormView

class django.views.generic.edit.ProcessFormView

提供基本 HTTP GET 和 POST 工作流程的 mixin。

笔记

这被命名为'ProcessFormView'并直接从django.views.generic.base.View继承,但如果独立使用会中断,所以它更像是一个mixin。

扩展

方法和属性

get(request, *args, **kwargs)

使用由 get_context_data() 创建的上下文呈现响应。

post(request, *args, **kwargs)

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

put(*args, **kwargs)

PUT 动作也被处理并将所有参数传递给 post()


DeletionMixin

class django.views.generic.edit.DeletionMixin

启用对 DELETE http 操作的处理。

方法和属性

success_url

成功删除指定对象后重定向到的 url。

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

delete(request, *args, **kwargs)

检索目标对象并调用其 delete() 方法,然后重定向到成功 URL。

get_success_url()

返回指定对象已成功删除后要重定向到的 url。 默认返回 success_url