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

Django之form组件

时间:2017-10-18 01:58:24      阅读:218      评论:0      收藏:0      [点我收藏+]

标签:基本操作   校验   password   显示   idt   print   等等   了解   form提交   

一、简介

web框架中避免不了对表单的验证,我们可以通过js在表单数据提交前做一次校验,然而在Django中form组件不仅仅提供验证功能,还可以生成HTML,还可以与model结合使用,等等强大的功能。

先了解下主要的作用:

  • 生成HTML标签
  • 验证用户数据(显示错误信息)
  • HTML Form提交保留上次提交数据
  • 初始化页面显示内容
二、基本操作

1.创建form类

#_*_ coding:utf-8 _*_
#Author:wd
from django.forms import Form
from django.forms import widgets
from django.forms import fields
class myform(Form):
    user=fields.CharField(   #字段名字一定要和模板中html中input中name属性一致才能验证
        widget=widgets.TextInput(attrs={id:a1,class:c1}),
        min_length=6,
        error_messages={required:用户名不能为空,min_length:用户名至少6位}
    )
    pwd=fields.CharField(
        widget=widgets.PasswordInput(),
        max_length=24,
        error_messages={required:密码不能为空,max_length:密码长度不能超过24}
    )
    email=fields.EmailField(
        error_messages={required:用户名不能为空,invalid:邮箱格式不正确}
    )    #校验时候出现的错误提示信息

2.views函数处理

from .cmdbforms import myform  #导入定义的form类
def fm(request):
    if request.method==GET:
        obj=myform()    #生成对象
        return render(request,form.html,{obj:obj})#将对象传入到模板中用于生成html
    elif request.method==POST:
        obj=myform(request.POST)
        if obj.is_valid():    #该方法验证post提交表单的数据是否合法,合法返回True或者否则Flase
            print(obj.clean())  #获取post表单中提交的数据,格式为字典,可以直接用于model操作数据库
            print(obj.cleaned_data)#获取post表单中提交的数据,格式为字典,可以直接用于model操作数据库
            return redirect(/cmdb/fm/)
        else:
            print(obj.errors)
            print(obj.errors.as_json())#json格式的错误
            return render(request,form.html,{obj:obj})#当出现错误的时候返回的错误信息

3.HTML模板

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<form action="/cmdb/fm/" method="POST" enctype="multipart/form-data">
    {% csrf_token  %}
    <p>{{ obj.user }} {{ obj.user.errors.0 }}</p>
{# 0代表第一个错误,在这里就是错误的字符串  #}
    <p>{{ obj.pwd }} {{ obj.pwd.errors.0 }}</p>
    <p>{{ obj.email }} {{ obj.email.errors.0 }}</p>
    <input type="submit" value="提交"/>
</form>
</body>
</html>

 

Django之form组件

标签:基本操作   校验   password   显示   idt   print   等等   了解   form提交   

原文地址:http://www.cnblogs.com/wdliu/p/7684736.html

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