當前位置:成語大全網 - 書法字典 - 誰更了解django.forms.ModelForm?

誰更了解django.forms.ModelForm?

在上壹節中,我們主要通過頁面顯示信息列表,那麽如何在頁面中進行添加、刪除、更改和檢查呢?在本節中,我們將通過頁面添加、刪除和修改現有數據。

1介紹。表單:

我們知道通過頁面將新數據插入數據庫通常是通過表單,Django提供了壹個非常完善的表單系統。

以下是Django官網對表單的介紹:

姜戈的?形式?功能可以簡化和自動化大部分工作,並且比大多數程序員自己編寫的代碼更安全。

Django處理表單工作的三個不同部分:

準備和重組數據以使其為呈現做好準備

為數據創建HTML表單

接收和處理客戶提交的表格和數據

簡而言之,Django將使表單的提交更加簡單和安全,包括重建數據並在頁面之間傳遞數據,創建前端HTML頁面以及接收和處理來自客戶端的數據。在實踐中,您只需要提前定義表單的各種屬性,並在首頁上簡單地調用它。當然,Django為表單提供了許多屬性,這便於定制,您甚至可以重寫壹些方法。

2.介紹2。模型表單:

在表單的基礎上,Django還提供了壹個ModelForm。如果您的表單表單非常接近數據模型,則可以使用ModelForm來節省大量代碼。例如,如果數據模型中有三個字段,並且這三個字段都需要通過表單提交,那麽使用ModelForm可以節省時間和精力。同時,ModelForm還支持用戶的自定義。接下來,我們將通過ModelForm進行演示。

3.?通過ModelForm完成三個表的數據添加:

1)在echo目錄中創建forms.py文件,以後將所有表單寫入該文件。這個文件需要在views.py中導入,這樣便於導入相應的表單。

創建壹個模型表單:

forms.py:

#-*-編碼:UTF-8-*-來自姜戈。表單從導入模型表單。ModelsImport Node,line,device #定義節點的形式。表單的名稱為mode name+Form class nodeform(ModelForm):#自定義ModelForm類Meta的內容:#此Model Form引用模型:節點模型=節點# Node _ signer的字段未顯示在表單中。exclude =【‘node _ signer‘】class line form(模型形式):class meta:model = line exclude =【‘line _ signer‘】。class Device form(model form):class Meta:model = Device exclude =【‘Device _ signer‘】

1)建立url和視圖之間的關系:

urls.py:

url(r'^add/',

4)?在views.py中建立相應的函數:

views.py:

# -*-編碼:UTF-8 -*-來自。模型從表單導入節點、線、設備從django導入節點表單、線表單、設備表單。快捷方式導入渲染、重定向定義添加(請求):#從節點表單獲取表單數據=節點表單(請求。post or none)#判斷表單是否有效if form . is _ valid():#創建壹個實例,需要做壹些數據處理。save instance = form . save(commit = false)#將登錄用戶作為註冊者實例。Node _ signer = request.user #保存實例instance . Save()#跳轉到列表頁面return redirect(‘/lists/‘)#創建壹個上下文以集中處理需要傳遞到頁面的數據context = {‘form‘:form,} #如果沒有有效提交,它仍將保留在原始頁面上return render(request,‘add . html‘,?上下文)

5)?在add.html的模板文件夾中創建壹個HTML文件。

add.html:

& lt!DOCTYPE html & gt& lthtml & gt& lthead & gt& ltmeta charset =“UTF-8“& gt;& lttitle & gt& lt/title & gt;& lt/head & gt;& ltbody & gt?& ltform method =‘POST‘action =‘‘‘& gt;{ % csrf _ token % } { { form } } & lt輸入類型=“提交”值=“提交”/& gt;?& lt/form & gt;& lt/body & gt;& lt/html & gt;

在add.html頁面中,表單必須具有標簽{% csrf_token %},否則頁面無法正常提交。這是Django為加強安全和防止CSRF襲擊而故意使用的壹種手段。

CSRF攻擊的工作原理是在授權用戶訪問的頁面中包含鏈接或腳本。例如,壹個網站用戶Bob可能正在瀏覽聊天論壇,而另壹個用戶Alice也在該論壇中,後者剛剛發布了壹條帶有Bob的銀行鏈接的圖片消息。假設Alice編寫了壹個鏈接來提交壹個從Bob的銀行網站取款的表單,並將該鏈接用作圖片src。如果Bob的銀行將他的授權信息保存在cookie中,並且cookie尚未過期,那麽當Bob的瀏覽器試圖加載圖片時,它將提交取款單和他的cookie,從而在未經Bob同意的情況下授權交易。