Django4.0 使用表單-HTML表單

2022-03-16 17:58 更新

在HTML中,表單是在 ?<form>...</form>?中的一些元素,它允許訪客做一些類似輸入文本、選擇選項、操作對象或空間等動作,然后發(fā)送這些信息到服務端。

一些表單界面元素(文本框或復選框)內(nèi)置在HTML中。其他會更復雜些;像彈出日期選擇或者允許您移動滑塊或者操作控件,一般通過使用JavaScript,CSS以及HTML表單中的

?<input>?元素來實現(xiàn)這些效果。

和元素?<input>?一樣,表單必須指定兩樣東西:

  • ?where?:對應于用戶輸入的數(shù)據(jù)應該返回到的URL
  • ?how?:應該返回數(shù)據(jù)的 HTTP 方法

例如,Django admin的登錄表單包含了一些 ?<input>? 元素:用戶名用 ?type="text"? ,密碼用 ?type="password"? ,登錄按鈕用 ?type="submit"? 。它還包含一些用戶看不到的隱藏文本字段,Django用它們來決定下一步行為。
它還告訴瀏覽器表單數(shù)據(jù)應該發(fā)往 ?<form>? 的 ?action ?屬性指定的URL—— ?/admin/ ?,并且應該使用它的 ?method ?屬性指定的HTTP方法—— ?post ?。
當 ?<input type="submit" value="Log in">? 元素被觸發(fā)的時候,數(shù)據(jù)會發(fā)送到 ?/admin/? 。

GET和POST

處理表單時只會用到 ?GET ?和 ?POST ?兩種HTTP方法。
Django的登錄表單使用 ?POST ?方法傳輸數(shù)據(jù),在這個方法中瀏覽器會封裝表單數(shù)據(jù),為了傳輸會進行編碼,然后發(fā)送到服務端并接收它的響應。
相比之下,?GET ?方法將提交的數(shù)據(jù)捆綁到一個字符串中,并用它來組成一個URL。該URL包含了數(shù)據(jù)要發(fā)送的地址以及一些鍵值對應的數(shù)據(jù)。
?GET ?和 ?POST ?通常用于不同的目的。
任何可能用于更改系統(tǒng)狀態(tài)的請求應該使用 ?POST ?—— 比如一個更改數(shù)據(jù)庫的請求。?GET ?應該只被用于不會影響系統(tǒng)狀態(tài)的請求。
?GET ?也不適合密碼表格,因為密碼會出現(xiàn)在 URL 中,因此也會出現(xiàn)在瀏覽器歷史和服務器日志中,都是純文本。它也不適合于大量的數(shù)據(jù),或二進制數(shù)據(jù),如圖像。一個使用 ?GET ?請求管理表單的網(wǎng)絡應用程序是一個安全風險:攻擊者很容易模仿表單的請求來獲得對系統(tǒng)敏感部分的訪問。?POST?,加上其他保護措施,如 Django 的 CSRF 保護,可以對訪問進行更多控制。
另一方面, ?GET ?方法適用于諸如網(wǎng)頁搜索表單這樣的內(nèi)容,因為這類呈現(xiàn)為一個 ?GET ?請求的URL很容易被存為書簽、分享或重新提交。


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號