Form表单验证之使用session做交互

本文介绍了一个使用Django实现的表单验证示例,包括手机号、数字输入等字段的有效性检查。通过自定义验证方法确保了用户输入数据的准确性。
from django.shortcuts import render
from django import  forms
from django.core.exceptions import ValidationError
from django.shortcuts import redirect
# Create your views here.
import  json
import re
def phone_valid(value):
    type=re.compile("^(13[0-9]|15[0-9]|17[79]|18[0-9])[0-9]{8}$")
    if not type.match(value):
        raise ValidationError("请输入正确的手机号")


def method_num(value):
    try:
        int(value)
    except Exception:
        raise ValidationError("必须为数字")
class LoginForm(forms.Form):
    username=forms.CharField(error_messages={"required":"用户名不能为空"})
    pawd=forms.CharField(
                         min_length=6,max_length=16,
                         error_messages={"required":"密码不能为空","min_length":"最小位数不能小于6位",
                                         "max_length":"最大位数不能超过16位"},
                         widget=forms.TextInput(attrs={"type":"password","required":False}))
    phone=forms.CharField(
                          max_length=11,
                          min_length=11,
                          validators=[phone_valid,],
                          error_messages={"required":"用户名不能为空","max_length":"手机号码不能超过11位","min_length":"手机号码不能低于11位"})
    number=forms.CharField(validators=[method_num,],error_messages={"invalid":"非法数字请重新填写"})


def login(requests):
    result=None
    objGet=LoginForm()
    if requests.POST:
        obj=LoginForm(requests.POST)
        ret=obj.is_valid()
        if ret:
            print(obj.clean())
            user=obj.clean()["username"]
            # result=redirect("/web/index/")#输入要跳转的cookeie页面
            # print(user)
            # result.set_cookie('user',user)#并输入要跳转的值
            result=redirect("/web/index/")
            requests.session["user"]=user
            return result
        else:
            print("没有校验正确")
            errorlist=obj.errors
            for k,v in errorlist.items():
                print(k,v)


            return render(requests,"sessionFormLogin.html",{"obj1":obj})
    else:
        objGet=LoginForm()
        return render(requests,"sessionFormLogin.html",{"obj1":objGet})
def index(requests):
    # Cookie版本
    # user=requests.COOKIES.get("user",None)
    # if user:
    #     return render(requests,"sessionIndex.html",{"user":user})
    # else:
    #     return render(requests,"session_login.html")
    user=requests.session.get("user",None)
    if user:
        return render(requests,"sessionIndex.html",{"user":user})
    else:
        return render(requests,"session_login.html")
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值