chencourage 2019-12-11
运维开发中, 各类接口服务和后台管理系统必不可少, 索性写个通用的/简单易用的/支持快速开发的微框架.
一是开发时尽可能只关注业务逻辑, 快速实现, 不用再过多考虑架构/前端/布局什么的.
二是将常用业务逻辑二次封装, 使用时, 用简洁的语句即可完成复杂的事务, 并自动处理异常.
三是方便运维小伙伴们快速理解 Web 项目开发, 无须深入理解 Flask 和前端即可完成此类项目开发.
该框架基于公司内部 OA 系统 OAuth2 登录, 在登录画面点击即可进入演示后台. 需要自行准备 OAuth2 参数配置到配置文件, 如 QQ, 微信, GitHub, 钉钉等. 也可自行实现账号密码登录.
# app/views/web.py @bp_web.route('/authorize') def web_authorize(): """OAuth 登录跳转""" # TODO: (演示使用, 自动登录), 请删除并配置自己的认证方式, OAuth2或账密系统 set_user_login({ 'job_number': 7777, 'realname': 'Fufu' }) return redirect(url_for('web.web_index'))
. ├── app 应用根目录, app.root_path │ ├── conf 配置文件目录 │ ├── forms 表单验证 │ ├── libs 公共类库 │ ├── models 表模型 │ ├── services 中间件, 逻辑处理 │ ├── static 静态文件 │ ├── templates 模板文件 │ └── views 视图函数 ├── data 数据文件 ├── docs 开发文档 ├── features BDD │ └── steps ├── logs 日志目录 │ └── behave.reports ├── scripts 脚本 ├── tests 单元测试 ├── tmp 临时文件 └── venv 虚拟环境
secret_settings.py
必须, 一般设置 SECRET_KEY 及数据库配置, 不要加入 Git.settings.py
必须, 常规配置, APP_NAME, 日志参数, 错误消息等.production_settings.py
可选, 默认加载项, 生产环境额外配置.development_settings.py
可选, 开发环境额外配置.testing_settings.py
可选, 测试环境额外配置, BDD 或单元测试时使用.第 3/4/5 项需要设置环境变量, 默认为 production
, 可选: development
testing
. 如:
# 1. Windows: set FF_PyAdmin=development echo %FF_PyAdmin% # 2. Linux: export FF_PyAdmin=development echo $FF_PyAdmin
生产环境建议使用加密环境变量, 生成加密数据的方式如下:
# Fufu~~Text 加密后 792e01268cc350077f772a5f python3 manage.py encrypt -d Fufu~~Text
使用方法见 secret_settings.py
中 OA_CLIENT_SECRET
和 PYADMIN_DBPASS
, 配置示例:
# Linux (Windows 使用上面的 set 方法) cp scripts/etc-profile.d-ffpyadmin.sh /etc/profile.d/ffpyadmin.sh chmod +x /etc/profile.d/ffpyadmin.sh source /etc/profile.d/ffpyadmin.sh
也可以使用不加密的环境变量, 配置文件中的获取环境变量时不加 key 参数即可:
# OA_CLIENT_SECRET = get_environ('PYADMIN_OAUTH_SECRET', key=SECRET_KEY) OA_CLIENT_SECRET = get_environ('PYADMIN_OAUTH_SECRET')