码迷,mamicode.com
首页 > 其他好文 > 详细

django forms模块使用

时间:2015-04-14 20:09:12      阅读:554      评论:0      收藏:0      [点我收藏+]

标签:password   import   widget   标签   

通过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>


django forms模块使用

标签:password   import   widget   标签   

原文地址:http://5201299.blog.51cto.com/5191299/1632231

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!