# python-web-framework-common **Repository Path**: simonblowsnow/python-web-framework-common ## Basic Information - **Project Name**: python-web-framework-common - **Description**: python标准后端框架,基于flask,含用户登录,token验证,用户权限控制,验证码,接口规范,数据库封装及线程池,redis缓存,第三方库组织引用,快速移植。 - **Primary Language**: Python - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 9 - **Forks**: 1 - **Created**: 2019-09-04 - **Last Updated**: 2023-08-14 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README 1、Python环境: 理论上兼容Python2和Python3,细微地方需改动 2、引用第三方库: 1) 本项目使用自带三方包方式,部署时直接复制整个项目即可。 故第三方包存放于项目根目录,常规IDE下直接运行main.py即可。 若出现找不到三方包但确实存在,可能由于PYTHON_PATH环境变量所致,参考第3。 2) 若想使用全局Python环境中pip所安装的包, 请删除本项目自带的三方包。 3、命令行启动(以下任意方式皆可) 1) start.bat 注: on windows or ./start.sh 注: on linux 2) python src/main.py 注: 根目录下 若 出现找不到包问题:使用: set PYTHONPATH=%cd% 注: on Windows or export PYTHONPATH=`pwd` 注: on Linux 3) python main.py 注: /src目录下 4、接口访问模式 本项目使用token验证方式,用户登录成功后返回token,具体为tk和lc 前端需在登陆接口成功后本地记录tk和lc,在需要验证的接口访问时携带此二参数。 后端接收到tk和lc后若验证通过,装饰器会自动解析用户名,作为每个接口的内定形参。 具体接口测试可参考第5 5、接口测试 Interface Example: ''' login test: http://localhost:9404/webLogin?username=admin&password=123456 Interface test: http://localhost:9404/test?status=1&tk=eyJhbG&lc=1943043233 Security-code test: http://localhost:9404/login-security-code?1567569328448 ''' 6、验证码 验证码需使用字体,字体文件位于src/libs/fonts目录下, 若需替换请准备字体文件,同时修改src/libs/auth_code中create_validate_code函数的参数。 7、Require libs: pip install flask # web框架 flask_cors # 支持跨域,前后分离 md5 # md5加密 pillow # 验证码PIL mysql.connector # mysql官方数据库连接引擎 DBUtils # 数据库连接池 itsdangerous # web框架,也许flask安装会附带 redis # 若线上部署,可选 8、redis缓存 src/libs/redisEx2模块为redis的二次封装,兼容有redis和无redis两种情形。 本项目暂时使用本地程序内存模式local_model(非redis), 即在没有redis环境下模拟redis服务,真实redis环境修改配置和模式即可。 9、配置 src/config.py为主要配置文件 src/common/key.py为标准字典文件 10、数据库 数据库使用mysql,测试数据库含有user和logs两个表,转储sql文件见src/docs/testDB.sql 数据库准备: mysql -u root -p password CREATE DATABASE IF NOT EXISTS testDB DEFAULT CHARSET utf8 COLLATE utf8_general_ci; 导入数据库文件: use testDB; source /root/testDB.sql 插入测试数据: insert into user (username, password, level, createTime) values ('admin', '123456', 6, '2019-01-01') 亦可使用/src/login.py中的createUser()函数 字段说明: 由于测试库MySQL版本较低,无法使用自动时间戳字段 11、用户权限控制 src/main.py文件中接口函数的装饰器 @authRequired('lv1') 控制接口用户验证和权限, 若为开放接口无需登录,则无需添加此装饰器。 其中参数'lvn'代表所需的权限等级,对应数据库用户表的level字段,等级越高,权限越高。 高级用户有权访问低级权限接口。