表單-概述

 

HTML中的表單:

單純從前端的html來講,表單是用來提交數據給服務器的,無論後臺的服務器用的是Django仍是PHP語言仍是其餘語言。只要把input標籤放在form標籤中,而後再添加一個提交按鈕,那麼之後點擊提交按鈕,就能夠將input標籤中對應的值提交給服務器了。javascript

Django中的表單:

Django中的表單豐富了傳統的HTML語言中的表單。在Django中的表單,主要作如下兩件事:html

1.渲染表單模板。
2.表單驗證數據是否合法。前端

Django中表單使用流程:

在講解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

相關文章
相關標籤/搜索