# Django 5.2.8 documentation

# 编辑混入

以下混入用于构建 Django 的编辑视图。

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

- `django.views.generic.edit.ModelFormMixin`

- `django.views.generic.edit.ProcessFormView`

- `django.views.generic.edit.DeletionMixin`

Note

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

## `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` 参数设置为 `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

  A form mixin that provides facilities for working with a `ModelForm`, rather than a standalone form.

  由于这是 `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`，则返回它；否则，尝试使用对象的 `get_absolute_url()`。

  form_valid(form)

    保存表单实例，为视图设置当前对象，并重定向到 `get_success_url()`。

  form_invalid(form)

    渲染一个响应，提供无效的表单作为上下文。

## `ProcessFormView`

class django.views.generic.edit.ProcessFormView

  一个提供基本 HTTP GET 和 POST 工作流程的混入。

  Note

  这个命名为 '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`。