备战秋招——记录自己学习的第六天(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>
最后我们来看下效果图:
刚才发送的数据,后端也全部收到: