單純從前端的html來講,表單是用來提交數據給服務器的,無論後臺的服務器用的是Django仍是PHP語言仍是其餘語言。只要把input標籤放在form標籤中,而後再添加一個提交按鈕,那麼之後點擊提交按鈕,就能夠將input標籤中對應的值提交給服務器了。javascript
Django中的表單豐富了傳統的HTML語言中的表單。在Django中的表單,主要作如下兩件事:html
1.渲染表單模板。
2.表單驗證數據是否合法。前端
在講解Django表單的具體每部分的細節以前。咱們首先先來看下總體的使用流程。這裏以一個作一個留言板爲例。首先咱們在後臺服務器定義一個表單類,繼承自django.forms.Form
。示例代碼以下:java
# forms.py class MessageBoardForm(forms.Form): title = forms.CharField(max_length=3,label='標題',min_length=2,error_messages={"min_length":'標題字符段不符合要求!'}) content = forms.CharField(widget=forms.Textarea,label='內容') email = forms.EmailField(label='郵箱') reply = forms.BooleanField(required=False,label='回覆')
而後在視圖中,根據是GET仍是POST請求來作相應的操做。若是是GET請求,那麼返回一個空的表單,若是是POST請求,那麼將提交上來的數據進行校驗。示例代碼以下:python
# views.py class IndexView(View): def get(self,request): form = MessageBoardForm() return render(request,'index.html',{'form':form}) def post(self,request): form = MessageBoardForm(request.POST) if form.is_valid(): title = form.cleaned_data.get('title') content = form.cleaned_data.get('content') email = form.cleaned_data.get('email') reply = form.cleaned_data.get('reply') return HttpResponse('success') else: print(form.errors) return HttpResponse('fail')
在使用GET請求的時候,咱們傳了一個form給模板,那麼之後模板就可使用form來生成一個表單的html代碼。在使用POST請求的時候,咱們根據前端上傳上來的數據,構建一個新的表單,這個表單是用來驗證數據是否合法的,若是數據都驗證經過了,那麼咱們能夠經過cleaned_data
來獲取相應的數據。在模板中渲染表單的HTML代碼以下:ios
<form action="" method="post"> <table> <tr> <td></td> <td><input type="submit" value="提交"></td> </tr> </table> </form>
咱們在最外面給了一個form標籤,而後在裏面使用了table
標籤來進行美化,在使用form對象渲染的時候,使用的是table的方式,固然還可使用ul的方式(as_ul
),也可使用p標籤的方式(as_p
),而且在後面咱們還加上了一個提交按鈕。這樣就能夠生成一個表單了web