赞
踩
使用了 Sanic 为底层框架,加上了Tortoise作为orm的驱动,再利用了低代码框架[百度] AMIS 来实现前端,就实现了一个可以便捷的解决了后端人员配置前端的麻烦,也通过 Sanic 的强大和轻便使得后端管理器可以覆盖更大的范围实现更强的功能的后端管理 程序SA-Admin了。
先给大家看看大概的界面,其实如果你看完一遍源码,你都可以照样开发一套出来,真的好简单,因为sanic本来就是参考flask的很多特性来开发的,使用方法基本跟flask一样,只不过这个是异步,是异步,真的是异步。
再说说Tortoise这个orm,真的很爽,而且他原生支持异步数据库mysql和pg,运行起来真的很爽,完全免去了自己写aiomysql的烦恼。而且这个orm框架处理序列化的时候,可以直接交给了sanic.
好了,先呈现大概的界面:
对于没有前端基础的童鞋,是不是感觉有点吃力,特别是自己弄过Django的,糊弄其他前端的时候,感觉真的好麻烦,也有点吃力,不过通过百度的低代码框架,真的感觉之前的苦白吃了。可以通过编辑器的方式【这个很多都可以实现】,但是最爽的是。。。。可以直接输出json后,加载到自己的前端页面中。这个操作就有点骚了。。。哈哈。
大家可以自己使用一下看看,地址是:https://aisuda.github.io/amis-editor-demo/#/hello-world
下图这里就是输出json的地方:
看到这里,是不是感觉有点儿戏呢?点点点真的可以使用起来吗?
其实大家不妨的尝试以下,真的可以,小弟不才,糊弄了这个SA-Admin出来,里面的功能还有很多不完善的,不过,真的可以提供给大家做个范例也好,反面教材都可以。源码上基本都写了中文注释的。[嘿嘿。。。。。]
安装使用我就不单独写了,直接复制了gitee上的介绍出来,请大家别介意。
暂时还没有处理成可以痛殴pypi安装的方式,可以直接克隆到本地,直接运行
python3 main.py
就可以运行调试。
具体的使用,你需要有sanic或者flask的基础即可使用。大致的框架参考Djanog,使用的ORM是Tortoise,,使用的模版是Jinja2,前端框架是使用了百度的低代码框架Amis,这是一个十分便捷的前端框架,不过你需要一点时间去熟悉它,这样你就可以直接通过Json来控制前端的页面。
代码中都有使用注释,可以直接查看代码
具体的使用:
数据库配置
数据库的配置在main.py中,如果需要换别的数据库,建议修改成Mysql或者PostgreSQL,因为Tortoise是直接支持这2个数据库的异步调用的,速度真的没多说。
sa_config.TEST_DATABASE_URL = "sqlite://security_test_db.sqlite3"
管理员配置
管理员的初始密码是 SAdmin : SAdmin@123
如果需要修改成自己的密码,请修改参数
sa_config.INITIAL_ADMIN_PASSWORD = "SAdmin@123" # 创建初始管理员帐户时使用的密码
配置端口,运行命令
如有需要请自行更改端口
app.run(host="127.0.0.1",
port=22222,
workers=1,
debug=True,
auto_reload=True)
命令说明:
worker=1 , 这个是配置多任务处理的,但是在高并发的情况下,因为并行和异步切换的耗时,比单独的1个单实例更慢,所以如果有需要的,建议开多个进程,暂时别使用workers,但是具体还是需要根据实际场景。
auto_reload=True ,是自动重载,这个真心好用。修改了代码不用手动重载
通过编辑器设计前端Amis
对于第一次接触Amis,还是慢慢的去看下Amis的介绍和使用方法,我当时也用了3天去看文档和了解各个部件的使用
然后就可以直接使用Amis的在线编辑来进行界面编辑了。
去前端代码区,创建json文件,然后把代码复制进去。
主框架对新建代码部分进行引用。
主框架文件是./admin/pages/site.json
修改和引用方法:
直接把整个主框架代码复制,然后去Amis编辑器中,新建一个页面,粘贴进去,然后按照自己喜好,增加1个栏目
,编辑好后,再次复制到site.json中。把data部分,修改成 “schema”:{}, // 这里的内容是右侧页面的内容
也可以直接参考我的做法,把新增加页面的内容另存为一个json文件,然后通过schemaApi去引用。具体请参考site.json文件的方法,
下面是Amis的json格式。
{
"status": 0, //返回必须项目
"msg": "", // 返回必须项
"data": { // 返回的就是页面元素的JSON
"pages": [
{ // 导航栏的标题层
"label": "Home",
"url": "/", // 代表这一层的url,方便其他层级跳转
"redirect": "/login" // 页面初始化的时候定位到什么页面
},
{
"label": "功能导航", // 这一层开始就是导航栏了
"children": [ // 导航栏的栏目层
{
"label": "登录/注册",
"url": "login",
"schema":{}, // 这里的内容是右侧页面的内容
},
{
"label": "这里有多少个,就代表导航栏有多少个栏目",
"url": "login",
"schema":{}, // 这里的内容是右侧页面的内容
}
]
}
]
}
}
这里解释下我说的所谓的高速高效
使用了ApiPost7进行测试,但是效果不想别人说的那么理想,估计是开了多个worker的问题,
自己写了个60秒的异步请求测试[./test/access_url.pu],大概的一个进程的访问量是20000~26000左右,返回结果是没有丢包的,大概请求的速率是400/S,在Sanic的处理下是完全没问题的。
当我开了3个进程同时进行,数量维持也是24000左右,结果也是完全没有报错。
当我开了10个进程,能同时处理的数量就下降到14000左右,不知道我是的手提电脑的资源限制「Macbook14 M1」还是怎样?如果有资源的你们可以使用我的代码,或者对其进行改进后再次进行测试。平均下来也是1300/S的压力负载,对于一个管理后台我觉得还是挺好的。
这是一个简单的Admin管理界面,请按照你的具体需求进行修改,根据amis的特性,大致可以满足admin管理界面的90%的需求的,其他的还需要前端ui进行协助。
最后双手奉上仓库地址,请大家多多指教:
GitHub:
https://github.com/A-Corner/Sanic-Admin
Git ee:
https://gitee.com/Acorner/Sanic-Admin
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。