欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

关于Django的Form表单

程序员文章站 2022-06-11 19:20:36
...

在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:假如输入的错误有很多,那只显示第一条就行了关于Django的Form表单

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