编辑 mixin — Django 文档
编辑混入
以下 mixin 用于构建 Django 的编辑视图:
django.views.generic.edit.FormMixin
django.views.generic.edit.ModelFormMixin
django.views.generic.edit.ProcessFormView
django.views.generic.edit.DeletionMixin
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()。 如果请求是POST
或PUT
,也会提供请求数据(request.POST
和request.FILES
)。
- 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 的实例可以访问 model 和 queryset 属性,描述 [ X191X] 正在操纵。
如果同时指定 fields 和 form_class 属性,则会引发 ImproperlyConfigured 异常。
混合
方法和属性
- model
一个模型类。 可以明确提供,否则将通过检查
self.object
或 queryset 来确定。
- fields
字段名称列表。 这与 ModelForm 的
Meta.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 工作流程的混入。
笔记
这被命名为'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
当指定对象被成功删除时,重定向到的网址。
success_url
可能包含字典字符串格式,它将根据对象的字段属性进行插值。 例如,您可以使用success_url="/parent/{parent_id}/"
重定向到由模型上的parent_id
字段组成的 URL。
- delete(request, *args, **kwargs)
检索目标对象并调用其
delete()
方法,然后重定向到成功 URL。
- get_success_url()
返回指定对象已成功删除后要重定向到的 url。 默认返回 success_url。