简体中文 | English
DashGo谐音大西瓜,这是一个开箱即用的低代码WEB框架,基于Plotly Dash框架和Fac开源组件库开发,只需要Python语言实现全栈的后台管理系统开发
Server酱
、企业微信群机器人
、SMTP邮件
、Gewechat
,可以实现数据大屏、实时监控和通知推送Server酱
、企业微信群机器人
、SMTP邮件
、Gewechat
https://github.com/luojiaaoo/dashgo-knowledge
)├─assets # 静态资源目录
│ ├─imgs # 图片资源
│ └─js # js文件资源(dash框架预加载js文件、浏览器回调js等)
├─common # Python共享功能库
│ └─utilities # Python工具类
├─config # 项目配置目录
├─dash_callback # Dash回调库
│ ├─application
│ │ ├─access_
│ │ ├─dashboard_
│ │ └─person_
│ └─pages
├─dash_components # Dash自定义组件
├─dash_view # Dash视图
│ ├─application # 应用视图,以“_”结尾的为内置应用
│ │ ├─access_
│ │ ├─dashboard_
│ │ ├─example_app # 应用例子
│ │ ├─notification_
│ │ ├─task_
│ │ └─person_
│ ├─framework
│ └─pages
├─database # 数据库
│ └─sql_db # 关系型数据库配置
│ ├─dao # 数据库orm抽象
│ └─entity # 数据库表实体
└─translations # 国际化
└─topic_locales
以example_app为例,存在2个应用页面 —— subapp1 subapp2
在config/access_factory.py中注册以上2个页面,系统会自动识别页面中的配置信息
以应用subapp1为例:
from common.utilities.util_menu_access import MenuAccess
import feffery_antd_components as fac
import feffery_utils_components as fuc
from common.utilities.util_logger import Log
from dash_components import Card
# 二级菜单的标题、图标和显示顺序
title = '应用1'
icon = None
order = 2
logger = Log.get_logger(__name__)
############# 注册权限,固定全局变量名access_metas ################
access_metas = (
'应用1-基础权限',
'应用1-权限1',
'应用1-权限2',
)
############# 返回视图页面的方法,方法名固定为render_content,menu_access为用户权限对象,kwargs为url内的query参数信息 #########
def render_content(menu_access: MenuAccess, **kwargs):
return fac.AntdFlex(
[
*(
[
Card(
fac.AntdStatistic(
title='展示',
value=fuc.FefferyCountUp(end=100, duration=3),
),
title='应用1-权限1',
)
]
if menu_access.has_access('应用1-权限1') ############# 判断是否拥有“应用1-权限1”的权限
else []
),
*(
[
Card(
fac.AntdStatistic(
title='展示',
value=fuc.FefferyCountUp(end=200, duration=3),
),
title='应用1-权限2',
)
]
if menu_access.has_access('应用1-权限2') ############# 判断是否拥有“应用1-权限2”的权限
else []
),
],
wrap='wrap',
)
在render_content中有参数menu_access可以进行权限的校验,回调中如何实现?
答:通过get_menu_access,根据cookie中的jwt的用户名字段,查询数据库,获取权限对象
from common.utilities.util_menu_access import get_menu_access
menu_access = get_menu_access()
menu_access.has_access('xxx')
如果只需要获取cookie中的jwt的用户名字段,减少数据库IO
from common.utilities.util_menu_access import get_menu_access
op_name = get_menu_access(only_get_user_name=True)
在translations\topic_locales中新建json文件(内容格式参考已存在的文件,推荐一级目录的名字来新建文件,下级的应用共用一个国际化json文件,json中的topic字段为主题字段,也推荐和一级目录的名字保持一致)
在i18n.py中添加,xxxx替换为一级目录的名字
t__xxxx = partial(translator.t, locale_topic='xxxx')
在需要翻译的视图或者回调函数中,按以下格式替换字符串,即可完成国际化
from i18n import t__xxxx
t__xxxx('Chrome内核版本号太低,请升级浏览器')
windows用户根据requirements_win.txt,linux用户根据requirements_linux.txt 安装Python依赖
安装依赖命令: python -m pip install -r requirements_xxx.txt
推荐安装虚拟环境:https://blog.csdn.net/m0_37789876/article/details/146011318
切换工作区到src目录
windows: cd /d e:\xxxx
linux: cd /app/xxxx
初始化数据库表结构和admin管理员数据
数据库初始化操作:
数据库表初始化表结构: python -c "from database.sql_db.conn import create_rds_table; create_rds_table()"
数据库初始化admin用户:python -c "from database.sql_db.conn import init_rds_data; init_rds_data()"
执行python app.py,即可启动Dash debugger调试模式,根据日志提示中的URL进行访问
生产环境(非debugger)启动命令:
- Windows: waitress-serve --host=0.0.0.0 --port=8090 --url-scheme=http --trusted-proxy=* --trusted-proxy-headers=x-forwarded-for --threads=8 app:server
- Linux: gunicorn --capture-output -w 4 -b 0.0.0.0:8090 app:server
默认账号
:admin、密码:admin123
如要使用任务中心模块,执行python app_apscheduler.py启动任务进程
请在Dash的世界畅游吧!!!
默认启动为sqlite数据库,如需用于生产,请根据config/dashgo.ini调整相关Mysql数据库配置
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。
1. 开源生态
2. 协作、人、软件
3. 评估模型