FF.PyAdmin 接口服务/后台管理微框架 (Flask+LayUI)

源码(有兴趣的朋友请Star一下)

初衷

运维开发中, 各类接口服务和后台管理系统必不可少, 索性写个通用的/简单易用的/支持快速开发的微框架.

一是开发时尽可能只关注业务逻辑, 快速实现, 不用再过多考虑架构/前端/布局什么的.

二是将常用业务逻辑二次封装, 使用时, 用简洁的语句即可完成复杂的事务, 并自动处理异常.

三是方便运维小伙伴们快速理解 Web 项目开发, 无须深入理解 Flask 和前端即可完成此类项目开发.

特点

  1. 后端 Flask, 对异常处理, 数据库, 表单验证, 权限验证都做了二次封装, 调用更简单, 通用性强.
  2. 前端 LayUI, 对数据表格作了二次封装, 支持自动按数据表生成表头, 可选使用. 丰富配色, 丰富图标.
  3. 前后端完全使用 API 接口通信, JSON 数据交互. 方便与各类前端框架/小程序对接.
  4. 适合做纯 API 接口服务, 也适合同时做接口服务和后台管理, 应用广泛/灵活.
  5. 对 HTTP 异常二次封装, APIException/MsgException, 标准化 JSON 字段和错误消息页面.
  6. 实现全局异常处理, 支持配置中自定义 404 等状态码消息. 500 状态码时自动记录日志.
  7. 异常返回自适应, POST 和 AJAX 请求自动返回JSON数据, 其他状态展示自定义错误页, DEBUG 显示原始异常.
  8. 自定义常用权限校验装饰器, 登录验证, 菜单权限验证, 接口权限验证, 来访 IP 白名单等.
  9. 依托 Flask 蓝图和视图函数, 适应大部分情况下的权限管理需求. 扩展性强.
  10. WTForms 二次封装, 极简调用, 适应性强. 中文内置错误消息, 自动数据获取的验证.
  11. 验证失败自动按需返回 JSON 或错误页. 自定义了通用的字符串和正整数验证方法, 适用性广.
  12. 修正 Flask-wtf 0.14.2, @csrf.exempt 无效的问题.
  13. SQLAlchemy 数据库交互二次封装, 实现自动提交机制和完善的异常处理, CRUD 全封装, 极简调用.
  14. 自带文件日志, 按日志文件大小自动滚动, 无须配置.
  15. 安全, 方便, 完善的配置文件方案.

图示

依赖

  1. Flask==1.1.1
  2. Flask_Login==0.4.1
  3. Flask_WTF==0.14.2
  4. Flask_Script==2.0.6
  5. Flask_Migrate==2.5.2
  6. Flask_SQLAlchemy==2.4.0
  7. SQLAlchemy==1.3.11
  8. cymysql==0.9.14
  9. WTForms==2.2.1
  10. Authlib==0.13
  11. requests==2.22.0
  12. concurrent_log_handler==0.9.16
  13. xxtea==1.3.0
  14. behave==1.2.6

该框架基于公司内部 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  虚拟环境

配置

  1. secret_settings.py 必须, 一般设置 SECRET_KEY 及数据库配置, 不要加入 Git.
  2. settings.py 必须, 常规配置, APP_NAME, 日志参数, 错误消息等.
  3. production_settings.py 可选, 默认加载项, 生产环境额外配置.
  4. development_settings.py 可选, 开发环境额外配置.
  5. 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.pyOA_CLIENT_SECRETPYADMIN_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')

使用

  1. Python3.5+, pip, MySQL 环境
  2. 建好 MySQL 数据库, 导入 data/db_ff_pyadmin.sql 示例数据, 修改配置文件
  3. pip3 install -r requirements.txt
  4. python3 start.py
  5. 访问: http://127.0.0.1:5000 http://ff.pyadmin:777

资料

  • Flask https://github.com/pallets/flask
  • OAuth2 https://github.com/lepture/authlib
  • LayUI https://github.com/sentsin/layui

原文地址:https://www.cnblogs.com/fufuok/p/PyAdmin.html

时间: 2024-10-11 06:52:00

FF.PyAdmin 接口服务/后台管理微框架 (Flask+LayUI)的相关文章

微服务的入门级微框架Spring Boot快速入门

详情请交流  QQ  709639943 00.微服务的入门级微框架Spring Boot快速入门 00.基于java的微信公众号二次开发视频教程 00.leetcode 算法 面试 00.北风网 零基础到数据(大数据)分析专家-首席分析师 00.快速上手JMeter 00.Jmeter 00.2017年Java web开发工程师成长之路 00.R语言速成实战 00.R语言数据分析实战 00.Python+Django+Ansible Playbook自动化运维项目实战 00.Java深入微服务

最为纯粹简单的后台管理页面框架

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title

linux服务后台管理

把进程放到后台有两种方法 1.cmmand & 2.ctrl+z    暂停到后台 查看后台服务  jobs 把后台进程移到前台 fg  %2 工作号  恢复到前台 后台服务继续执行 bg  %工作号 [[email protected] ~]# jobs  查看后台工作[1]   Stopped                 top[2]-  Stopped                 top[3]+  Stopped                 top 加号代表默认第一个恢复 减号

java 通过接口在后台管理器中生成数据

需求:测试人员在后台批量添加数据很麻烦,特别是针对一款商品配置了英语,还需要手动添加法语.俄语.阿拉伯语,很麻烦,但是因为没有项目组配合,做个小工具批量生成数据就只有自己去研究了 第一步:通过抓包工具fiddler查看接口走向 第二步:模拟url,进行请求 第三步:验证结果 第一步:从接口中我了解到,我们需要获取原始语言的数据,如:标题.名称.文件标题.详细信息,在把数据取出来,取出来后,在调用商品增加的接口,把数据内容填充进去,进行提交,就完了 目前我们排除登录态的问题,默认是可以登录成功的,

接口服务错误管理(将错误堆栈返回给请求)的实现

在提供服务的时候,为了方便排查问题,很多时候我们需要把错误信息放在返回信息中返回给请求. 闲话不多说,分享下我的一个错误信息管理类ZSGErrorManage: 错误code: public static enum ERRORCODE{ ERROR_OK, ERROR_OTHER, ERROR_PARAM_ILLEGALITY, ERROR_UNKNOWN; } 获取错误message: public static String getMsgThroughErrorCode(ERRORCODE

Core + Vue 后台管理基础框架6——业务日志

1.前言 上一篇,我们讲了审计日志,重点是重点业务表的审计字段.还有一种系统审计,就是重点业务对象的改动记录,是以审计日志表中的记录形式存在的.这种审计记录一般需要精确定位到某个终结点,最合适的实现方式就是操作过滤器. 2.实现 自定义操作过滤器: public class LogAttribute : ActionFilterAttribute { public string LogName { get; private set; } public LogAttribute(string lo

BBS(仿博客园系统)项目05(后台管理功能实现:文章添加、富文本编辑器使用、xss攻击、BeautifulSoup4模块、富文本编辑器上传图片、修改头像)

摘要 布局框架搭建 随笔添加 后台管理富文本编辑器KindEditor xss攻击 文章简介的截取,BeautifulSoup4模块 富文本编辑器上传图片 头像修改 一.后台管理框架布局搭建 后台管理布局框架分析:导航条.左侧功能区.右侧主要功能显示和实现区 实现: 导航条:使用bootstrap模板:JavaScript>>导航条 左侧:使用bootstrap模板:组件>>列表组 右侧:使用bootstrap模板:JavaScript>>标签页 新建后台管理路由(注意

微服务架构的基础框架选择:Spring Cloud还是Dubbo?

最近一段时间不论互联网还是传统行业,凡是涉及信息技术范畴的圈子几乎都在讨论微服务架构.近期也看到各大技术社区开始组织一些沙龙和论坛来分享Spring Cloud的相关实施经验,这对于最近正在整理Spring Cloud相关套件内容与实例应用的我而言,还是有不少激励的. 目前,Spring Cloud在国内的知名度并不高,在前阵子的求职过程中,与一些互联网公司的架构师.技术VP或者CTO在交流时,有些甚至还不知道该项目的存在.可能这也与国内阿里巴巴开源服务治理框架Dubbo有一定的关系,除了Dub

微服务架构的基础框架选择

最近一段时间不论互联网还是传统行业,凡是涉及信息技术范畴的圈子几乎都在讨论 微服务架构 .近期也看到各大技术社区开始组织一些沙龙和论坛来分享Spring Cloud的相关实施经验,这对于最近正在整理Spring Cloud相关套件内容与实例应用的我而言,还是有不少激励的. 目前,Spring Cloud在国内的知名度并不高,在前阵子的求职过程中,与一些互联网公司的架构师.技术VP或者CTO在交流时,有些甚至还不知道该项目的存在.可能这也与国内阿里巴巴开源服务治理框架Dubbo有一定的关系,除了D