1. 程式人生 > >Django表單

Django表單

ESS 所有 valid host con action request key imp

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_lengthmin_length

設定初始值:在form類中: initial 參數

自定義驗證規則:Django 的表單系統會自動查找名稱以 clean_ 開頭、以字段名結尾的方法。如果存在這樣的方法,在驗證過程中調用。可以在表單類中自定義方法。

指定標註:指定label參數

自定義表單外觀:在模板中,每個字段使用的控件( <input type="text"> 、 <select> 、 <textarea>,等等)可以使用 {{form.fieldname }} 單獨渲染,而各個字段上的錯誤可以通過 {{ form.fieldname.errors }} 獲取。

Django表單