9.用户登录_后端接口开发——WTForms表单验证、Tornado创建控制器发送请求
2023-09-27 14:23:04 时间
1.概述
上一次, 我们通过了邮箱验证的方式成功注册了用户,这里,我们将对比存储到mysql中的数据进行对比,成功则返回正确的结果
2.实现流程
- 首先,我们应该验证他的账号密码是否符合表单验证规则,这样可以避免用户输入错误一直发送请求浪费资源。所以,我们这里使用WTForms去验证
- 验证完之后,我们使用异步的peewee_async去处理数据,对其做验证功能
3.代码展示
3.1WTForms表单验证规则
# forum/wtforms.py
# 完整注册(给t_user表)增加数据之前的数据验证
from wtforms_tornado import Form
from wtforms.fields import StringField
from wtforms.fields.simple import HiddenField
from wtforms.validators import DataRequired, Length
# 对登录的数据验证
class LoginUserForm(Form):
id = HiddenField()
email = StringField('账号', validators=[DataRequired(message='请填写合法的邮箱地址'),Length(min=5, max=20, message='请输入5-20长度的邮箱')])
nick_name = StringField('昵称')
password = StringField('密码', validators=[Length(min=2, message='请输入2以上长度的密码')])
signature = StringField('签名')
pic = StringField('头像')
3.2登录接口
# forum/handler/UserHandler.py
from forum.wtforms import UserForm,LoginUserForm
from forum import manager
from forum.models import UserModel
from uuid import uuid4
from forum.handler.BaseHandler import BaseHandler
from forum.utils.email_utils import send_mail
from forum.utils.redis_utils import *
from random import randint
from config import email
# 登录接口
class LoginHandler(BaseHandler):
async def post(self):
# 记录登录信息
rs_data = {}
# 获取表单数据
user_form = LoginUserForm(self.request.arguments)
# 验证是否符合form表单输入的规则
if user_form.validate():
try:
# 数据库中获取
user = await manager.get(UserForm, email=user_form.email.data, password=user_form.password.data)
# 获取到了,登录成功
rs_data['code'] =200
rs_data['msg'] = '登录成功!!!'
except Exception as e:
# 获取不到,登录失败
rs_data['code'] = 401
rs_data['msg'] = '用户名或密码错误'
else:
rs_data['code'] = 401
rs_data['msg'] = '用户名不符合规范'
for f in user_form.errors:
print(user_form.errors)
rs_data[f] = user_form.errors[f][0]
self.finish(rs_data)
4.Postman测试
注意!!!前端做了加密和解密处理,所以,postman测试时候是对应mysql中存储的密码数据;前端登录时,输入加密之前的数据即可
相关文章
- Jmeter验证码图片识别注册接口压力测试实战
- JVM系列之:JIT中的Virtual Call接口
- 干货 | 原来升职加薪的测试工程师都擅长做接口测试
- 4年经验之谈,什么是接口测试?怎样做接口测试?
- 为什么Java中一个类可以实现多个接口,但只能继承一个类?
- 第十五章 使用管理门户SQL接口(二)
- 疑问解答:get与post的区别;HTTP状态码详解;怎样的接口是个好接口?
- 接口测试基本知识点
- 资深测试开发已经不用postman测试接口了,你还在用
- 墙上有个USB接口,你敢用吗?
- 接口快速开发框架 magic-api 2.x初体验
- c#的接口详解
- 实验1定时与中断接口程序设计
- 与安卓对接接口中文乱码的问题
- Django Rest framework后端接口框架,常用的子类视图
- 接口 Postman 上传图片测试
- 接口headers