您的位置:首页 > 编程语言 > Go语言

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

2019-06-09 21:21 656 查看
版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.csdn.net/weixin_41643663/article/details/91357506

在之前的项目中,自己一直是在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 == 'zsp@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>

最后我们来看下效果图:

刚才发送的数据,后端也全部收到:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐