在学习开发本项目之前,必须保证有以下知识储备和环境工具。
手动创建工程目录,路径不要使用中文或者特殊符号。
创建虚拟环境,终端下执行命令如下:
安装完成以后,需要激活当前虚拟环境[切换python解释器],终端执行如下命令:
1.1.1 依赖安装
1.1.2 项目目录
工程目录尽量和虚拟环境的名称保持一致,pycharm一般都可以自动识别。如果pycharm不能自动识别,则点击编辑器右下角选择自定义解释器即可。
,代码:
,代码:
通过启动api服务端项目,访问地址:http://127.0.0.1:8000/api,效果如下:
1.1.3 项目配置
在原目录结构基础上增加与、,效果如下:
,代码:
,代码:
,代码:
,代码:
重启项目,如果项目运行正常,并刷新浏览器后效果如下,则表示配置正确:
1.1.3.1 数据库配置
在终端下创建数据库,执行命令如下:
执行效果如下:
,环境配置中新增配置项,代码如下:
手动创建配置文件,编写tortoise-orm的配置信息,代码:
注册Tortoise-ORM到FastAPI应用对象中。,代码:
完成上面的配置以后,因为默认并没有连接数据库,因此我们需要编写一个数据表模型进行数据库连接操作以测试连接配置是否正确,不过这块我们先放一放,因为项目开发过程中有可能数据库需要保存很多数据,自然也就需要创建对应很多的数据表模型,而不同的数据对应的功能业务是不同的,因此我们需要分开写在不同的文件或者目录下,所以我们得先配置应用分组,不同的功能分属于不同的应用下,每一个应用都属于自己的数据表模型、api视图接口、路由数据等。
1.1.3.2 应用分组
首先创建分组应用存储目录,并在目录下先创建2个应用分组目录,分别是公共数据应用分组与用户数据应用分组,目录结构如下:
接下来,我们可以把最初编写在入口程序的测试api视图接口,转移到common应用分组目录下的接口视图文件中,,代码:
入口程序文件中不再编写api视图接口,代码:
因为应用分组是我们自定义的目录,所以FastAPI默认是不识别的,所以需要手动把应用分组下的路由注册到App应用对象中,,代码:
再次重启api服务端项目,访问http://127.0.0.1:8000/api,输出内容依旧则表示配置成功。
接下来,我们就可以在分组应用中创建属于用户相关的数据表模型了,,代码:
完成模型创建以后,接下来只需要在中把当前新增模型的路径添加到配置项中,代码:
注册模型到中以后,在初始化文件中,把的值改为,让自动根据模型建表。,代码如下:
OK,重启项目,查看终端如果正常启动,则表示上面的所有操作正确。继续登陆MySQL数据库,查看是否建表成功,效果如下:
建表成功表示配置正确,接下来,我们可以考虑使用数据迁移来管理数据表模型与MySQL数据表的修改记录对应关系。所以先鼠标右键删除数据库中新建的数据表,并在初始化文件中,把的值改为,操作与代码如下:
1.1.3.3 数据迁移
对Tortoise-ORM使用数据迁移根据模型创建数据表会更加友好更加方便,安装数据迁移工具,执行命令如下:
把aerich注册到Tortoise-ORM中,,代码:
使用aerich进行迁移初始化,打开终端,执行命令如下:
生成数据迁移文件,终端命令执行如下:
操作效果如下:
1.1.3.4 日志配置
,代码:
,代码:
注册中间件到App应用对象,代码:
1.1.3.5 异常处理
启动hbuilderX编辑器,点击文件→新建(N)→1.项目
选择类型,输入项目名称,选择模板,点击创建(N),即可成功创建uni-app项目。这里我的项目名称:uniapp。
1.2.1 运行项目
使用快捷键打开设置窗口→运行设置→小程序运行设置,填写微信开发者工具路径。
注意:如果没有安装,点击蓝色链接去下载安装,并在安装完成以后启动微信开发者工具,进入设置窗口→安全,把服务端端口和自动化接口…信任项目等配置项打开如下:
小程序配置中,可以直接使用测试AppID也可以使用真实账户的AppID,设置→基本设置→账号信息:
进入uniapp项目,点击工具栏的运行 -> 运行到小程序模拟器 -> 微信开发者工具:
1.2.2 目录结构
,配置页面路径和基本样式效果:
1.2.3 界面效果
1.2.3.1 登陆页面
,代码:
展示效果如下:
1.2.3.2 聊天页面
,代码:
访问效果如下:
客户端用户点击获取用户登录需要的code,并把code和用户信息发送给服务端,服务端请求微信服务器,实现登陆流程如下:
2.1.1 服务端提供登陆接口
passlib 用于处理哈希密码的包,支持许多安全哈希算法以及配合算法使用的实用程序,推荐的算法是 Bcrypt,所以终端下执行命令如下:
,代码:
,代码:
视图文件中编写api接口,,代码:
2.1.2 客户端发送登陆请求
代码:
2.2.1 服务端提供注册接口
基于pydantic提供的BaseModel定义接口的输入和输出的数据结构,,代码:
创建API接口的视图文件,,代码:
把中的路由对象,注册到项目中,,代码:
2.2.2 客户端实现注册功能
,代码:
3.1 服务端调用langchain对接ChatGPT
提供接口,代码: