django forms模塊使用

通過django froms模塊生成html input標籤

首先在當前應用下創建一個forms.py的文件

vim forms.py

from django import forms

def  forms.AdminForm(forms.Form):

  

     username = forms.CharField() #生成明文的輸入框

     password = forms.CharField(widget=forms.widgets.PasswordInput) 

     #生成一個密文顯示的輸入框

     

     password = forms.CharField(widget=forms.widgets.PasswordInput(attrs={'class':'auto'}))

     (attrs={'class':'auto'}) #定義標籤屬性

     email1 = forms.CharField(widget=forms.widgets.EmailInput)

     email2 = forms.EmailField()

     #widget類型是通過正則表達式來判定的





views.py裏面寫一個生成用forms模塊input標籤的方法

    def  index2(request):

             if  request.method == ‘POST’:  

              #判斷在html表單裏面提交的方式是什麼(一般是2種方式 post和get)

                  form  = forms.AdminForm(request.POST) 

                    #AdminForm是在froms.py裏面的一個類,通過forms方法來調用,並賦值給form

                    if  forms.is_valid(): 

                        #判斷是否合法,輸入錯誤的會在前端頁面提示錯誤信息

                        data = form.cleaned_data #請求通過接受該數據

                        m = AdminForm(username='tom',password='tom123') 

                        #AdminForm裏面提交數據,並保存

                        m.save()

                    else:#如果輸入規則不匹配在前臺顯示錯誤信息

                         print form.erros.as_data()

                         print form.erros.as_json()

                         print form.erros.as_text()

                         常見錯誤信息格式

              else:

                    form = forms.AdminForm() 

                    #判斷如果不是post方法提交的

          return render_to_response(‘index2.html’,{‘model’:form})

          #把結果返回給前端的index2.html,model是前端Index2.html裏面的一個變量用於接                  受後臺返回的數據,form是真實的數據





3.index2.html內容


<html>

<head>

<meta http-equiv="Content-Type" content="text/html"/>

    <title></title>

</head>

<body>

<form action='/index2/' method='POST'>

    <p>用戶名:`model`.`username`</p>

    <p>密碼:`model`.`password`</p>

    <p>郵箱:`model`.`email`</p>

    <input type='submit' value='提交' />

</form>

</body>

</html>



優化之後的,更簡潔的省去很多html代碼


<html>

<head>

<meta http-equiv="Content-Type" content="text/html"/>

    <title></title>

</head>

<body>

<form action='/index2/' method='POST'>

    ` model`.`as_table` 已table形式展示出來

     ` model`.`as_ul`  已ul形式展示出來

     #具體查看form父類裏面的詳細方法---源碼

     #好處省代碼

     #壞處樣式不可控

    <input type='submit' value='提交' />

</form>

</body>

</html>


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章