# Django 3.2.11.dev 文档

# 编辑混入

以下混入用于构建 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`

  一个提供创建和显示表单的设施的混入类。

  混入

  - `django.views.generic.base.ContextMixin`

  **方法和属性*

  `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` `参数设置为 :meth:`.get_initial`。如果请求是 ``POST` 或 `PUT`，还将提供请求数据（`request.POST` 和 `request.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` 上工作的表单混入，而不是一个独立的表单。

  由于这是 `SingleObjectMixin` 的一个子类，所以这个混入的实例可以访问 `model` 和 `queryset` 属性，描述 `ModelForm` 所操纵的对象类型。

  如果你同时指定了 `fields` 和 `form_class` 属性，将引发 `ImproperlyConfigured` 异常。

  混入

  - `django.views.generic.edit.FormMixin`
  - `django.views.generic.detail.SingleObjectMixin`

  **方法和属性*

  `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` 实例化，这取决于提供的属性。

  `get_form_kwargs`()

    将当前实例（`self.object`）添加到标准 `get_form_kwargs()` 中。

  `get_success_url`()

    当表单成功验证后，确定重定向到的 URL。如果提供了 `django.views.generic.edit.ModelFormMixin.success_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.view.generic.base.View`，但如果独立使用就会中断，所以它更像是一个混入。

  扩展

  - `django.views.generic.base.View`

  **方法和属性*

  `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`。