假設你想從表單接收用戶名數據,通常狀況下,你須要在HTML中手動編寫一個以下的表單元素:html
<form action="/your-name/" method="post"> <label for="your_name">Your name: </label> <input id="your_name" type="text" name="your_name" value="{{ current_name }}"> <input type="submit" value="OK"> </form>
-name/
和HTTP方法POST
。form元素內部還定義了一個說明標籤<label>
和一個發送按鈕‘submit’,以及最關鍵的接收用戶輸入的<input>
元素。前端
咱們能夠經過Django提供的Form類來自用生成上面的表單,再也不須要手動在HTML中編寫。python
首先,在你當前app內新建一個forms.py
文件(這個套路是Django的慣用手法,就像views.py
,models.py
等等),而後輸入下面的內容:django
from django import forms class NameForm(forms.Form): your_name = forms.CharField(label='Your name', max_length=100)
要點:bootstrap
<form>
元素中的表單元素。這一點和Django模型系統的設計很是類似。max_length
限制最大長度爲100。它同時起到兩個做用,一是在瀏覽器頁面限制用戶輸入不可超過100個字符,二是在後端服務器驗證用戶輸入的長度不可超過100。(警告:因爲瀏覽器頁面是能夠被篡改、僞造、禁用、跳過的,全部的HTML手段的數據驗證只能防止意外不能防止惡意行爲,是沒有安全保證的,破壞分子徹底能夠跳過瀏覽器的防護手段僞造發送請求!因此,在服務器後端,必須將前端當作「裸機」來對待,再次進行徹底完全的數據驗證和安全防禦!)後端
每一個Django表單的實例都有一個內置的is_valid()
方法,用來驗證接收的數據是否合法。若是全部數據都合法,那麼該方法將返回True,並將全部的表單數據轉存到它的一個叫作cleaned_data
的屬性中,該屬性是以個字典類型數據。瀏覽器
當咱們將上面的表單渲染成真正的HTML元素,其內容以下:安全
<label for="your_name">Your name: </label> <input id="your_name" type="text" name="your_name" maxlength="100" required />
必定要注意,它不包含服務器