編輯 Mixin¶
以下 mixin 用於建構 Django 的編輯視圖
注意
有關如何將這些組合到編輯視圖中的範例,請參閱 通用編輯視圖 的文件。
FormMixin
¶
- class django.views.generic.edit.FormMixin¶
一個 mixin 類別,提供建立和顯示表單的功能。
Mixin
方法和屬性
- initial¶
一個包含表單初始資料的字典。
- form_class¶
要實例化的表單類別。
- success_url¶
表單成功處理後要重新導向的 URL。
- 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
,而不是獨立表單的表單 mixin。由於這是
SingleObjectMixin
的子類別,因此此 mixin 的實例可以存取model
和queryset
屬性,描述ModelForm
正在操作的物件類型。如果您同時指定
fields
和form_class
屬性,則會引發ImproperlyConfigured
異常。Mixin
方法和屬性
- 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
,則返回該 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)¶
建構表單,檢查表單的有效性,並據此進行處理。
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
。