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>


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