关于Django的Form表单

在Django中有一个验证神器,那就是Form表单,它会自动生成你所需要的表单内容,并自动为你验证是否正确,并可以返回错误的详细信息(前提是你写的详细)。在flask里面也是类似的,仅仅是类似,但还是有区别的,这里flask的就不详说


views.py


#先导入必要的包(Django自带的)

from django import forms
from django.forms import fields

#创建一个表格类

class egForm(forms.Form):

#设置用户名的长度,以及错误提示
    user = fields.CharField(
        max_length=18,
        min_length=6,
        required=True,
        error_messages={'required': '用户名不能为空','max_length': '太长了','min_length': '太短了','invalid':'格式输入有误'}
    )
#设置密码要求
    pwd = fields.CharField(
            required=True,
            min_length=6,
            max_length=18,
            eror_message={'required':'用户名不能为空','max_length': '密码太长了','min_length': '密码最小为6位','invalid':'格式输入有误'})
#设置年龄要求
    age = fields.IntegerField( required=True,max_length=3,error_message:{'required':'年龄不能为空','max_length': '年龄超出范围','min_length': '您太小了吧,'invalid':'年龄未知'})
#设置email要求,
    email = fields.EmailField(required=True,min_length=8,error_message:{'required':'邮箱不能为空','min_length': '邮箱太短','invalid':'邮箱格式输入有误'})

#函数(路由的view)
def eg(request):
#判断提交请求是‘POST’,‘GET’
    if request.method == 'GET':
#如果是GET请求,那就渲染from的HTML页面,通过字典的方式把数据传过去       
#创建

obj = egForm()
        return render(request,'eg.html',{'obj':obj})
    else:
        obj = F1Form(request.POST)
        # 是否全部验证成功
        if obj.is_valid():
            # 用户提交的数据
            print('验证成功',obj.cleaned_data)
            #redirect是重定向,后面一般是url,redirect(reverse('app:urlname')),登录或注册后需要跳转的页面,这里只是假设
            return redirect('http://www.baidu.com')
        #没有验证成功
        else:
            print('验证失败',obj.errors)
            return render(request, 'eg.html',{'obj':obj})

eg.HTML

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>

    <form id="eg" action="/eg.html" method="POST">
        //把传过来的对象obj进行渲染
        <p>账号:{{ obj.user }}{{ obj.errors.user.0 }}</p>
        <p>密码:{{ obj.pwd }}{{ obj.errors.pwd.0 }}</p>
        <p>年龄:{{ obj.age }}{{ obj.errors.age.0 }}</p>
        <p>e-mail:{{ obj.email }}{{ obj.errors.email.0 }}</p>
        <input type="submit" value="提交" />
    </form>
    <script src="/static/jquery-3.1.1.js"></script>

</body>
</html>

HTML中后面的obj.errors.user.0,这样可以把错误直接显示在输入的后面,直接判断此处输入是否有误.后面的.0:假如输入的错误有很多,那只显示第一条就行了

HTML的样式就没有写,这是一个很简洁的演示

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值