首页 > 开发 > PHP > 正文

Python中使用django form表单验证的方法

2024-05-04 22:49:42
字体:
来源:转载
供稿:网友

一. django form表单验证引入  

有时时候我们需要使用get,post,put等方式在前台HTML页面提交一些数据到后台处理例 ;

<!DOCTYPE html><html lang="en"><head>  <meta charset="UTF-8">  <title>Form</title></head><body>  <div>    <form action="url" method="post" enctype="multipart/form-data">{% csrf_token %}      <input type="text" name="username"/>      <input type="password" name="password"/>      <input type="submit" value="submit"/>    </form>  </div></body>

前端提交后台获取:

from django.shortcuts import render,HttpResponse,redirectfrom app01 import modelsdef Login(request):  if request.method == "POST":    username = request.POST.get("username")    password = request.POST.get("password")    return HttpResponse("Hello,%s"%(username))

这样就完成了基本的功能,基本上可以用了。

但是,如果用户输入并未按照要求(比如手机号要输数据11位长度,密码的复杂度等),还有就是提交后再回来已经输入的数据也会没了

当然如果我们手动将输入之后的数据在 views 中都获取到再传递到网页,这样是可行的,但是很不方便,所以 Django 提供了更简单易用的 forms 来解决验证等这一系列的问题

,在这里不得不提Django的插件库真的很强大,简单易扩展,上面的内容只是引进为什么要使用form,下面着重记录django form的使用

二.form表单验证应用

  需要在django的APP中新建一个模块form.py,具体内容如下

class RegisterForm(forms.Form):  email = forms.EmailField(required=True,               error_messages={'required': "邮箱不能为空"})  password = forms.CharField(max_length=120,                min_length=6,                required=True,                error_messages={'required': "密码不能为空"})  invite_code = forms.CharField(required=True,error_messages={'required': "验证码不能为空"})

前端页面

<!DOCTYPE html><html lang="en"><head>  <meta charset="UTF-8">  <title>register</title></head><body>  <div>    <form action="url" method="post" enctype="multipart/form-data">      <input type="text" name="username"/>      <input type="password" name="password"/>      <input type="text" name="code"/>      <input type="submit" value="submit"/>    </form>  </div></body>

后台views处理

def register(request):  if request.method == "POST":    f = Reg_Form(request.POST)    if f.is_valid():      user = f.cleaned_data["username"]      pwd = f.cleaned_data["password"]      code = f.cleaned_data["code"]      res_code = request.session.get("code", None)      result = models.UserInfo.objects.filter(user__exact=user,pwd__exact=pwd)      if code.upper() == res_code.upper() and result:        models.UserInfo.objects.filter(user__exact=user).update(status=1)        request.session["user"] = user        return redirect("/home")      else:        return render(request, "register.html", {"error": f.errors, "form": f})else:return render(request, "register.html")            
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表