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

資料


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM