使用PyQt5+FastAPI+SQLAlchemy+Redis+Celery做一个登录注册页(四)
本文将介绍用 PyQt5+FastAPI+SQLAlchemy+Redis+Celery 做的一个登录注册页,使用邮箱接收验证码,本文介绍是前后端分离的实现方式,厚后端使用 FastAPI+SQLAlchemy+Redis+Celery,你可以将 PyQt5 改为 PySide2 以获得更宽松的开源协议
注意
本文由于涉及到的代码较多,将会是一个系列,会有多篇文章,且不在像 前后端未分离项目一样,做详细步骤描述,只写主要内容,详细的代码你需要自主查看 GItHub 上的公开仓库
系列文章索引
- 设计登录注册页面
- 添加代码运行登录注册页,并为其添加一些样式,和调用资源文件
- 使用 FastAPI+SQLAlchemy+Redis+Celery 编写API
- 使用 Pyqt5 GUI页面请求API,实现逻辑功能
环境
使用到的开源库如下
# requirements.txt
# The project is developed based on Windows Python3.8-64, version: 3.8.10
PyQt5
PyQt5-stubs
pywin32
email-validator
结构
结构解释如下,方便你理解
--- QtLoginRegistrationClient
|--- core
|--- __init__.py
|--- login_register.py # 登录注册
|--- lib
|--- __init__.py
|--- basic_function.py # 存放公共方法
|--- crypto.py # 本地密码的加解密,存在在 SQLite3 中
|--- crypto_sqlcipher.py # 将 SQLite3 替换为 SQLCipher,实现本地数据库密码访问
|--- network.py # 网络请求:get,post,put,delete
|--- static
|--- qss # 存放qss样式的目录
|--- login_register.qss # 样式(类似于CSS)
|--- resources.qrc # 新加的资源文件
|--- resources_rc.py # 资源文件转换的 Py 文件
|--- uis
|--- __init__.py
|--- LoginRegisterEmail.py # ui 文件转换的 Py 文件
|--- LoginRegisterEmail.ui # 登录注册页
|--- MianWindow.py # ui 文件转换的 Py 文件
|--- MianWindow.ui # 系统主页
|--- main.py # 入口
|--- main_window.py # 主窗口
|--- setting.py # 设置
区别
与 前后端未分离的相比,主要区别如下
- 取消数据库交互,而是改用
QtNetwork
实现网络请求 - 在
login_register.py
中,全部改为用 网络请求 实现功能 - 将
SQLite3
替换为SQLCipher
,实现本地数据库密码访问,编译pysqlcipher3平替SQLite3