Python_Django-3

Django中的Form組件

1.Django的form的作用:

    1、生成html標籤
    2、用來做用戶提交的驗證
# views.py 
from django import forms

class UserInfo(forms.Form):
     email = forms.EmailField(required=False) #required是否可以爲空,如果爲False說明可以爲空
     host = forms.CharField()   #如果required不寫默認爲Ture
     port = forms.CharField()
     mobile = forms.CharField()

def user_list(request):
    obj = UserInfo()            #創建了這個對象
    return render(request,'user_list.html',{'obj':obj}) #然後把對象傳給html。

前端只要進行調用上文中傳入的obj即可相應的生成對應的表單,並且具有輸入和驗證的功能

# user_list.html  調用。
<form action="/user_list/" method="post">
    <p>主機:{{ obj.host }}</p>
    <p>端口:{{ obj.port }}</p>
    <p>郵箱:{{ obj.email }}</p>
    <p>手機:{{ obj.mobile }}</p>
    <input type="submit" value="submit"/>
</form>

對Form表單的內容進行驗證和獲取,根據相應的結果進行對應的處理

from django import forms

class UserInfo(forms.Form):
     email = forms.EmailField(required=True)   #required是否可以爲空,如果爲False說明可以爲空
     host = forms.CharField()    #如果required不寫默認爲Ture
     port = forms.CharField()
     mobile = forms.CharField()

def user_list(request):
    obj = UserInfo()   #創建了這個對象
    if request.method == 'POST':
        #獲取用戶輸入一句話就搞定
        user_input_obj = UserInfo(request.POST)
        '''
        咱們把post過來的數據當參數傳給UserInfo咱們定義的這個類,UserInfo會自動會去你提交的數據
              email/host/port/mobile 自動的封裝到user_input_obj裏,封裝到這個對象裏我們就可以判斷輸入是否合法
        '''
        if user_input_obj.is_valid():       #判斷用戶輸入是否合法
             data = user_input_obj.clean()   #獲取用戶輸入
             print data
        else:
            #如果發生錯誤,捕捉錯誤。
             error_msg = user_input_obj.errors
            print error_msg    #打印一下然後看下他的類型
            '''
            <ul class="errorlist">
            <li>mobile<ul class="errorlist"><li>This field is required.
            </li></ul></li>
            <li>host<ul class="errorlist"><li>This field is required.</li></ul></li>
            <li>port<ul class="errorlist"><li>This field is required.</li></ul></li>
            </ul>
            '''
            #然後把錯誤信息返回
             return render(request,'user_list.html',{'obj':obj,'errors':error_msg,})  #然後把對象傳給html,在把錯誤信息傳遞過去
    return render(request,'user_list.html',{'obj':obj,})   #然後把對象傳給html

這時,在前端的展示界面上就可以加上對於錯誤信息的顯示了

<form action="/user_list/" method="post">
    <p>主機:{{ obj.host }}<span>{{ errors.host }}</span></p>
    <p>端口:{{ obj.port }}<span>{{ errors.port }}</span></p>
    <p>郵箱:{{ obj.email }}<span>{{ errors.email }}</span></p>
    <p>手機:{{ obj.mobile }}<span>{{ errors.mobile }}</span></p>
    <input type="submit" value="submit"/>
</form>
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章