編輯 Mixin

以下 mixin 用於建構 Django 的編輯視圖

注意

有關如何將這些組合到編輯視圖中的範例,請參閱 通用編輯視圖 的文件。

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,將會使用該類別。否則,將使用與 querysetmodel 相關聯的模型實例化 ModelForm,具體取決於提供了哪個屬性。

get_form_kwargs()

將當前實例 (self.object) 新增至標準的 get_form_kwargs()

get_success_url()

決定表單成功驗證時要重新導向的 URL。如果提供了 django.views.generic.edit.ModelFormMixin.success_url,則返回該 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

返回頂部