Django-website 程序案例系列-16 modle.form(表单验证)

案例程序:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<form action="/fm/" method="POST">  #3个输入框分别是user/pwd/email
    {% csrf_token %}
    <input type="text" name="user" />
    <input type="text" name="pwd" />
    <input type="text" name="email" />
    <input type="submit" value="提交" />
</form>
</body>
</html>

views函数:

from django import forms   # 首先需导入forms包

class FM(forms.Form):     #建立一个验证类
    user = forms.CharField(error_messages={'required': '用户名不能为空'})     #自定制的中文错误返回
    pwd = forms.CharField(
        max_length='12',
        min_length='8',
        error_messages={'required': '密码不能为空', 'max_length': '密码最大长度不能大于12', 'min_length': '密码最小长度不能小于8'}
    )
    email = forms.EmailField(error_messages={'required': '邮箱不能为空', 'invalid': '邮箱格式错误'})

def fm(request):
    if request.method == "GET":
        return render(request, 'fm.html')
    elif request.method == "POST":
        # 获取用户的所有数据
        # 每条数据请求的验证
        # 成功:获取所有的正确信息
        # 失败:显示错误信息
        obj = FM(request.POST) #生成一个表单验证类
        r1 = obj.is_valid()    #验证输出的结果 成功为true  错误为false
        print(r1)
        if r1:
            print(obj.cleaned_data)  #如果成功返回验证好的数据并打印
        else:
            print(obj.errors.as_json)  #如果失败返回错误信息打印
        return redirect('/fm/')

 

显示的信息:

达到了自定制返回的错误信息为中文的目的

 

 向前端送出验证错误信息:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<form action="/fm/" method="POST">
    <p><input type="text" name="user" />  {{ obj.errors.user.0 }} </p>  #前端显示验证错误信息
    <p><input type="text" name="pwd" /> {{ obj.errors.pwd.0 }} </p>
    <p><input type="text" name="email" /> {{ obj.errors.email.0 }} </p>
    <input type="submit" value="提交" />

</form>
</body>
</html>
def fm(request):
    if request.method == "GET":
        obj = FM()
        return render(request, 'fm.html', {'obj': obj}) # 传送一个验证数据对象obj
    elif request.method == "POST":
        # 获取用户的所有数据
        # 每条数据请求的验证
        # 成功:获取所有的正确信息
        # 失败:显示错误信息
        obj = FM(request.POST)
        r1 = obj.is_valid()
        print(r1)
        if r1:
            print(obj.cleaned_data)
        else:
            print(obj.errors)
            return render(request, 'fm.html', {'obj': obj})
    return render(request, 'fm.html')

 

完整的注册页面的简单表单验证加注册:

def fm(request):
    if request.method == "GET":
        obj = FM()
        return render(request, 'fm.html', {'obj': obj})
    elif request.method == "POST":
        obj = FM(request.POST)
        r1 = obj.is_valid()
        if r1:
            models.UserInfo.objects.create(**obj.cleaned_data) #直接一条语句数据注册成功
        else:
            return render(request, 'fm.html', {'obj': obj})
    return render(request, 'fm.html')

  

使用forms类生成字段和html标签:

from django.forms import widgets  # widgets是生成html标签的插件
from django.forms import fields  # 在定义forms类时建议最好使用fields来表示字段
class FM(forms.Form):
    user = fields.CharField(error_messages={'required': '用户名不能为空'},    # 自定义错误
                            widgets=widgets.Textarea(attrs={'class': 'c1'}),#调用插件widgets 然后生成Textarea标签(多行文本输入框) 然后添加属性attrs(class=c1)
                            )
    pwd = fields.CharField(
        max_length='12',
        min_length='8',
        error_messages={'required': '密码不能为空', 'max_length': '密码最大长度不能大于12', 'min_length': '密码最小长度不能小于8'},
        widgets=widgets.PasswordInput(attrs={'class': 'c2'}), #调用插件widgets 然后生成PasswordInout标签(多行文本输入框) 然后添加属性attrs(class=c2)
) email = fields.EmailField(error_messages={'required': '邮箱不能为空', 'invalid': '邮箱格式错误'})

  

生成的标签:

 

转载于:https://www.cnblogs.com/kuku0223/p/8119362.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值