Django表單
Httprequest對象的方法和屬性:屬性/方法
| 屬性/方法 | 說明 | 示例 |
| :--- | :--- | :--- |
| request.path | 完整的路徑,不含域名,但是包含前導斜線| “/hello/”|
| request.get_host() | 主機名(即通常所說的“域名”) |“127.0.0.1:8000”或“www.exam-ple.com” |
| request.get_full_path() | 包含查詢字符串(如果有的話)的路徑|“/hello/?print=true”|
| request.is_secure() |通過 HTTPS 訪問時為 True ,否則為 False| True 或 False |
- request.META 的值是一個 Python 字典,包含請求的所有 HTTP 首部,
1.HTTP_REFERER :入站前的 URL(可能沒有)。
2.HTTP_USER_AGENT :瀏覽器的用戶代理(可能沒有)。
3.REMOTE_ADDR :客戶端的 IP 地址,
註意,因為 request.META 是個普通的 Python 字典,所以嘗試訪問不存在的鍵時,拋出 KeyError 異常。
(HTTP 首部是外部數據,即由用戶的瀏覽器提交,因此不能完全相信,當某個首部為空或不存在時,應該讓應用程序優雅失敗。)為了處理未定義的鍵,應該使用 try / except 子句,或者 get() 方法:
HttpRequest 對象還有兩個屬性包含用戶提交的信息: request.GET 和 request.POST 。這兩個屬性的值都是類似字典的對象,分別用於獲取 GET 和 POST 數據。 POST 數據一般由 HTML表單提交,而 GET 數據既可以來自表單,也可以來自頁面 URL 中的查詢字符串。
action="" 的意思是,“把表單提交到與當前頁面相同的 URL”。
新建form.py,創建表單類:
from django import forms class ContactForm(forms.Form): subject = forms.CharField() email = forms.EmailField(required=False) message = forms.CharField()
定義的form類:
1.能夠轉化成html文檔
2.能夠進行驗證
3.is_valid()判斷數據是否有效
4.cleaned_data 屬性,它的值是一個字典,存儲著“清理後的”提交數據。Django 的表單框架不僅驗證數據,還會清理數據,把值轉換成合適的 Python 類型:
改變字段的渲染方式: widget 參數
設定長度:max_length
和 min_length
設定初始值:在form類中: initial 參數
自定義驗證規則:Django 的表單系統會自動查找名稱以 clean_ 開頭、以字段名結尾的方法。如果存在這樣的方法,在驗證過程中調用。可以在表單類中自定義方法。
指定標註:指定label參數
自定義表單外觀:在模板中,每個字段使用的控件( <input type="text"> 、 <select> 、 <textarea>
,等等)可以使用 {{form.fieldname }} 單獨渲染,而各個字段上的錯誤可以通過 {{ form.fieldname.errors }} 獲取。
Django表單