ruoyi spring版本支持一键导出前后端代码,且b站上有很多教程,但是发现python版本的教程并不多,于是自己尝试创建一个简易的CRUD模块
1.各版本bug
主要尝试了1.1.2版本和vue2的版本,链接如下:
两个版本的文件管理都有一定的bug
1.1.2版本第一次上传文件成功后再上传会提示I/O的setblocking函数出错,目前没找到原因,大致是上传文件后套接字发生了变化,由于没有相关经验所以还没有解决,但是可能linux上部署后会支持ftcnl包能够自行解决
---------更新,问题已经解决,问题来自于eventlet的猴子补丁,他处理协程的时候有问题,但是我尝试改了ftcnl那部分效果不太好,于是就不让他去接管除了socket之外的操作了:
把request_util.py中的代码
eventlet.monkey_patch(thread=False)
改成如下即可
eventlet.monkey_patch(socket=True, other_modules=False)
本来是接管除了线程以外的其他操作,现在是只接管socket操作
另一个版本默认没有打开文件管理的上传按钮,需要在菜单管理中添加并且在vue文件中取消注释,但是上传文件后点击完成会再上传一份并且报错,但是文件管理中能够显示,一个治标不治本的方法就是把第二次上传的后端返回给改了,但是还存在无法读取request.user的问题。
以下是使用v1.1.2进行的修改
2.新增模块操作
首先在菜单管理设置菜单和按钮,组件路径即前端路径,按钮权限标识最好和后端接口对照,前端代码仿照权限管理或系统管理中的代码,修改对应的vue和api中的js文件,删除多余的文件,系统的名字title在.env.x中进行修改
后端是基于django的,综合看一下系统管理和权限管理的代码,注意大小写,修改view中的每个文件,数据库结构在model中修改,具体设置可以看django框架的内容,注意在修改后增加url和settting里的app,删除migration记录,再重新makemigrations
3.按钮跳转隐藏菜单
其实低代码平台的菜单管理就是进行了路由的设置和权限标识的设置
自己可以在router中的index.js中设置要跳转的路由,在想要跳转的vue文件中进行跳转就可以
4.上传文件的调整
文件上传功能的vue文件位于src\components\FileUpload\index.vue,具体修改可根据实际情况来,根据elm和vue的操作进行修改即可
5.过滤器的配置
新增模块后突然发现有的可以模糊查询有的则不能,在view中修改了search_field之后不起作用,后来查资料发现这个好像只对参数是search的起作用,具体对某个参数可以模糊查询需要配置过滤器,其中变量名name则是url中的参数名(没想到是根据变量名字匹配的,害我找了大半天原因)
class TableFilter(django_filters.rest_framework.FilterSet):
"""
表格管理 简单序过滤器
"""
name = django_filters.CharFilter(lookup_expr='icontains')
class Meta:
model = Table
exclude = ('description', 'creator', 'modifier')
6.关于序列化器和视图集
框架中有很多自己写的序列化器,通过代码可以了解最终在视图集中使用的序列化器都是继承了好几层的,对于二次开发,不用修改最底层的序列化器,只需要修改serializer.py中的序列化器,其实也不用怎么修改,想要进行数据验证才去在validate函数中修改,想要修改增删改查的操作直接在对应的视图集类中创建完实例后,重写一个create函数POST操作就会自动跳转到这里,对应的update函数就是PUT。如果不需要进行额外的操作就直接实例化一些类就行了,具体参照post模块的view.py文件中的post视图集。