uiadmin 新增 python-fastapi 版本🎉
周末对python-flask拷贝改了一版本fastapi。php/js/java/.net几个比较下俩,同语言下换框架,python/js相对较快。
uiadmin新增python-fastapi版本🎉https://pypi.org/project/Uiadmin-FastApi/
说明
python版本uiadmin实现, API接口自动生成管理后台,无需前端参与。
https://pypi.org/project/Uiadmin-FastApi/
Builder文档
https://uiadmin.net/docs/builder
教程
官方脚手架
下载脚手架工程
如果您不想自己搭建项目工程,可以直接使用官方的脚手架。
https://gitee.com/uiadmin/uiadmin/tree/master/back-end-python/
下载后执行
pip install "fastapi[all]" pip install uiadmin-fastapi pip freeze >requirements.txt pip install -r requirements.txt uvicorn main:app --reload
访问:localhost:8000/xyadmin/ 输入账号admin密码uiadmin登录即可进入管理后台页面
手动创建工程
安装依赖
pip install "fastapi[all]" pip install uiadmin-fastapi pip freeze >requirements.txt pip install -r requirements.txt
增加配置文件
在config/default.yml添加如下内容
uiadmin: site: # 网站名称 title: "UiAdmin" #正方形logo logo: "" #带有标题的横logo logoTitle: "" logoBadge: "" system: api-version: "1.0.0" menu-from: "annotation" user: user-role: - id: 1 name: super_admin title: 超级管理员 menus: "" status: 1 - id: 2 name: admin title: 管理员 menus: [ "/v1/admin/demo/lists" ] status: 1 user-list: - id: 1 nickname: "admin" username: "admin" password: "uiadmin" avatar: "" roles: "super_admin" status: 1
main.py使用
from fastapi import FastAPI from fastapi.middleware.cors import CORSMiddleware from starlette.responses import HTMLResponse # 配置使用https://pypi.org/project/config2/ from config2.config import config from uiadmin_fastapi.Uiadmin import Uiadmin from uiadmin_fastapi.utils import jsonres from uiadmin_fastapi.util.xybuilder.XyBuilderList import XyBuilderList from uiadmin_fastapi.util.xybuilder.XyBuilderForm import XyBuilderForm app = FastAPI() # 跨域 app.add_middleware( CORSMiddleware, allow_origins=['*'], allow_credentials=True, allow_methods=["*"], allow_headers=["*"], ) # 调用Uiadmin uiadmin = Uiadmin(app) @app.get("/", response_class=HTMLResponse) def index(): return "<a href='/xyadmin/'>点击打开后台</a><br><a href='/redoc'>查看接口文档</a>" # 示例 @Uiadmin.menu_item({"title": "文章列表", "path": "/demo/lists", "pmenu": "/content", "menuType": 1, "routeType": "list", "apiSuffix": "", "apiParams": "", "apiMethod": "GET", "sortnum": 0}) @app.get("/api/v1/admin/demo/lists") async def demo_lists(): dataList = [ { "id": 1, "title": "测试文章1", "cate": "开发", "cover": "https://ts2.cn.mm.bing.net/th?id=ORMS.11d30098d0f4a79a42c6352014e0f066&pid=Wdp&w=300&h=156&qlt=90&c=1&rs=1&dpr=2&p=0", "level": 1, "progress": 50, "updateTime": "2023-02-01 20:16:19", "createTime": "2023-02-01 09:07:40", "status": 1 }, { "id": 2, "title": "测试文章2", "cate": "开发", "cover": "https://ts2.cn.mm.bing.net/th?id=ORMS.ed34ae135a326a834ca9d3379be134d3&pid=Wdp&w=300&h=156&qlt=90&c=1&rs=1&dpr=2&p=0", "level": 2, "progress": 80, "updateTime": "2023-02-01 20:16:19", "createTime": "2023-02-01 09:07:40", "status": 1 }, { "id": 3, "title": "测试文章3", "cate": "科技", "cover": "https://ts2.cn.mm.bing.net/th?id=ORMS.ed34ae135a326a834ca9d3379be134d3&pid=Wdp&w=300&h=156&qlt=90&c=1&rs=1&dpr=2&p=0", "level": 3, "progress": 90, "updateTime": "2023-02-01 20:16:19", "createTime": "2023-02-01 09:07:40", "status": 1 }, ] xyBuilderlist = XyBuilderList(); (xyBuilderlist .init() .addColumn("title", "标题", { "type": "text" }) .addColumn("cover", "封面", { "type": "image", }) .addColumn("cate", "分类", { "type": "tag", "prefixType": "dot", "options": [] }) .addColumn("progress", "进度", { "type": "progress" }) .addColumn("level", "评分", { "type": "rate" }) .addColumn("level", "优先级", { "prefixType": "dot", "useOptions": True, "options": [ {"title": "低", "value": 1, "color": "#c6cdd4"}, {"title": "中", "value": 2, "color": "#0488de"}, {"title": "高", "value": 3, "color": "#ff9d28"} ] }) .addColumn("createTime", "创建时间", { "type": "time", }) .addColumn("updateTime", "发布时间", { "type": "time", }) .addTopButton("add", "添加", { "title": "新增", "pageType": "modal", "modalType": "form", "api": "/v1/admin/demo/add", "width": "1000px" }) .addColumn("rightButtonList", "操作", { "type": "rightButtonList", "minWidth": "120px" }) .addRightButton("edit", "修改", { "title": "修改", "pageType": "modal", "modalType": "form", "api": "/v1/admin/demo/edit", "width": "1000px" }) .setDataList(dataList) ) return jsonres({ "code": 200, "msg": "登录成功", "data": { "listData": xyBuilderlist.getData() } } ) @Uiadmin.menu_item({"title": "文章增加", "path": "/demo/add", "pmenu": "/demo/lists", "menuType": 1, "routeType": "form", "apiSuffix": "", "apiParams": "", "apiMethod": "POST", "sortnum": 0}) @app.get("/api/v1/admin/demo/add") def demo_add(): xyBuilderForm = XyBuilderForm() (xyBuilderForm .init() .addFormItem("name", "文章标题", "text", "", {}) .addFormItem("content", "文章内容", "html", "", {}) .addFormItem("level", "登记", "select", "", { "options":[ {"title": "低", "value": 1}, {"title": "中", "value": 2}, {"title": "高", "value": 3}, ] }) ) return jsonres({ "code": 200, "msg": "成功", "data": { "formData": xyBuilderForm.getData() } } ) @Uiadmin.menu_item({"title": "文章修改", "path": "/demo/edit", "pmenu": "/demo/lists", "menuType": 1, "routeType": "form", "apiSuffix": "", "apiParams": "", "apiMethod": "POST", "sortnum": 0}) @app.get("/api/v1/admin/demo/edit/{id}") def demo_edit(id: int): xyBuilderForm = XyBuilderForm() (xyBuilderForm .init() .addFormItem("id", "ID", "text", "", { "disabled": True }) .addFormItem("name", "文章标题", "text", "", {}) .addFormItem("content", "文章内容", "html", "", {}) .addFormItem("level", "登记", "select", "", { "options":[ {"title": "低", "value": 1}, {"title": "中", "value": 2}, {"title": "高", "value": 3}, ] }) .setFormValues({ "id": id, "name": "text", "content": "测试", "level": 2 }) ) return jsonres({ "code": 200, "msg": "成功", "data": { "formData": xyBuilderForm.getData() } } )
运行
uvicorn main:app --reload

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Pigsty v2 正式发布:更好的 RDS PG 开源替代
2023/02/28,Pigsty v2.0.0 正式发布,带来了一系列重大的功能更新。 现在 PIGSTY 是 "PostgreSQL In Great STYle"的首字母缩写,即"全盛状态的 PostgreSQL"。而 Pigsty 的定位也不再是 “开箱即用的PostgreSQL数据库发行版”,变成了 “Me Better 开源 RDS PG 替代”。 2.0 新特性 Pigsty 是一个更好的、本地优先的,开源 RDS for PostgreSQL 替代。 开箱即用的 PostgreSQL 发行版,深度整合地理时序分布式三大核心扩展: PostGlS,TimescaleDB,Citus. 基于现代的 Prometheus 与 Grafana 技术栈,提供令人惊艳,无可比拟的数据库观测能力: Public Demo 基于 patroni,haproxy,与etcd,打造故障自愈的高可用架构: 硬件故障自动切换,流量无缝衔接。· 基于 pgBackRest 与可选的 Minl0 集群提供开箱即用的 PITR 时间点恢复,为软件缺陷与人为删库兜底 基于Ansible 提供声明式的 ...
- 下一篇
每日一博 | 用 Chrome devTools performance 分析页面如何渲染
页面是如何渲染的?通常会得到“解析 HTML、css 合成 Render Tree,就可以渲染了”的回答。但是具体都做了些什么,却很少有人细说,我们今天就从 Chrome 的性能工具开始,具体看看一个页面是如何进行渲染的,以及进行页面优化时需要关注哪些指标。 以“老二次元”网站 bilibili 为例,我们将通过分析 performance 面板,串联起 Chrome 页面渲染流程,以及页面的部分量化指标的含义,来看页面具体是如何渲染的。 获取performance数据 首先,打开Chrome devTools, 选择 performace面板,点击录制按钮开始录制。 之后为了防止我们分析页面时出现无关的干扰,我们通过以下步骤降低干扰项: 1、打开 Chrome 无痕模式。 2、关闭所有在 Chrome 无痕模式下启用的拓展(如果有的话)。 3、在地址栏输入 www.bilibili.com 前,先打开 devTools,选择 performance 面板,点击录制按钮。 4、在已经录制的情况下,地址栏回车,请求 B 站,大概 10s 后,停止录制。 我们从上到下,将图分成以下几块,如...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- CentOS7设置SWAP分区,小内存服务器的救世主
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- Eclipse初始化配置,告别卡顿、闪退、编译时间过长
- CentOS关闭SELinux安全模块
- Docker安装Oracle12C,快速搭建Oracle学习环境
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- CentOS7安装Docker,走上虚拟化容器引擎之路
- CentOS8编译安装MySQL8.0.19