编辑 mixin

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

注意

这些 mixin 如何组合成编辑视图的示例可以在关于通用编辑视图的文档中找到。

FormMixin

class django.views.generic.edit.FormMixin

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

Mixin

方法和属性

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_class,则将使用get_form_class()

get_form_kwargs()

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

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

get_prefix()

确定生成的表单的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而不是独立表单的表单 mixin。

由于这是SingleObjectMixin的子类,因此此 mixin 的实例可以访问modelqueryset属性,这些属性描述了ModelForm正在操作的对象类型。

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

Mixin

方法和属性

model

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

fields

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

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

success_url

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

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

get_form_class()

检索要实例化的表单类。如果提供了form_class,则将使用该类。否则,将使用与queryset关联的模型或model实例化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

返回顶部