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

备战秋招——记录自己学习的第六天(Django项目难点拆分——利用form定制实现用户验证)

程序员文章站 2022-06-06 13:58:28
...

在之前的项目中,自己一直是在models中创建类,再利用Django生成数据库表,在前端利用form表单提交数据或者ajax提交数据之后,然后在后台利用拿到的数据,自己写正则表达式进行比较。这个过程是他别繁琐的。其实在Djano中有可以用form去进行验证,它具有十分强大的验证功能,下面我们利用form来验证一下用户登录(如果想和数据库的数据进行交互,我们只需要讲其取出,然后和后端拿到的前端数据进行比较即可,为了方便,这里仅采用取值的情况):

第一步,配置urls:

from django.contrib import admin
from django.urls import path
from app01.views import views  #为了每个views之间不相互干扰,我们在app下穿件一个views文件夹,里面存放着一个个的views文件

urlpatterns = [
    path('admin/', admin.site.urls),
    path('form.html/', views.index),
]

创建views:

from django.shortcuts import render
from django import forms
from django.forms import fields
from django.core.exceptions import ValidationError
# Create your views here.

class UserForm(forms.Form):
    username = fields.CharField(label = '用户名')
    email = fields.EmailField(label = '邮箱')

    def clean(self):
        v1 = self.cleaned_data['username']
        v2 = self.cleaned_data['email']
        if v1 == 'zsp' and v2 == 'aaa@qq.com':
            pass
        else:
            raise ValidationError('用户名或密码错误!')
        return self.cleaned_data
def index(request):
    if request.method == "GET":
        obj = UserForm()
        return render(request,'form.html',{'obj':obj})
    elif request.method == 'POST':
        obj = UserForm(request.POST)  # 将后端的数据传入form中进行验证
        obj.is_valid()
        obj.cleaned_data
        print(obj.cleaned_data)  #将正确的数据在后端打印出来
    return render(request,"form.html",{'obj':obj})

简单的设置一下templates中的前端页面:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<form action="/form.html/" method="post">

    {{ obj.as_p }}   # 也as_后面可以跟各种类型
    <input type="submit" value="提交">
</form>


</body>
</html>

最后我们来看下效果图:
备战秋招——记录自己学习的第六天(Django项目难点拆分——利用form定制实现用户验证)

刚才发送的数据,后端也全部收到:
备战秋招——记录自己学习的第六天(Django项目难点拆分——利用form定制实现用户验证)