一、插件的基础概念:
二、插件的编写:
1.插件开头
2.插件结尾
3.插件正文
4.插件如何放在后端调试
5.在后端修改插件
6.插件的日志打印
7.下载功能的实现
三、如何调用后端插件
1.上传插件
2.表单组件自定义按钮的调用
3.在前端插件中调用后端插件
一、后端插件的基础概念:
使用后端语言,编写插件,给予网页业务层上的功能。
二、插件的编写:
插件的开头和结尾均为固定写法,自己写的函数,在中间编写即可
1.插件开头
我们只需要在字典中暴露自己的函数名。按照固定写法,添加新的字典,
修改 键 func的值为自己想要函数的名。修改type为自己需要的类型
xplugin_list = [
{
“func”: “export_find_all”,#插件结尾自己想要暴露的函数
“args”: {
“type”: “per-entry”
# global:表示不需要表单数据,任何地方都可以执行
# per-entry:表示选择表单内的某条数据,可以通过这样获取, object_pk = kwargs.get(‘object_pk’, None), object_pk就是获取到那条数据的id
# per-table:表示选择表单内的选中的某些数据,可以通过这样获取, object_pks = kwargs.get(‘objects’, []),object_pks就是获取到的那些数据id的列表
}
},
2.插件的结尾:
def export_find_all(*args, **kwargs):
logger.info(" running with %s" % kwargs)
ret, msg = find_all(**kwargs)#插件正文名
#ret 一般为true or flase
#msg一般为你返回的主体
return {
‘msg’: msg,
‘code’: 0 if ret else -1,
}
3.插件正文:
自己写的函数,一定要传入(*args,**kwargs), 结尾需要返回两个值ret和msg给结尾的暴露函数。ret 一般为true or flase ,msg一般为你返回的主体。
引入封装好的查询方法做查询:
from xplugin.api.xplugin_sdk import CrPlugin as cp #引入模块
cp.getList(self, app_vname: str, model_vname: str, query: dict, by_id=False)
#App_vname为app名
#Model_vname为模型名
#query为quertset查询条件。不需要查询条件可以传空字典
如,查询使用手册下的帮助手册全部信息:
cp.getList(‘使用文档’, ‘帮助手册’, {})
生成表格后,将文件移动到
例子:
from xplugin.api.xplugin_sdk import CrPlugin as cp
xplugin_list = [
{
“func”: “export_find_all”,
“args”: {
“type”: “per-table”
}
},
]
def find_all( **kwargs):
objs = cp.getList(‘使用文档’, ‘帮助手册’, {})
return True,objs
def export_find_all(*args, **kwargs):
logger.info(" running with %s" % kwargs)
ret, msg = find_all(**kwargs)
return {
‘msg’: msg,
‘code’: 0 if ret else -1,
}
4.插件如何放在后端调试:
1.将写好的插件放在后端/home/yundan/目录下。
2.给予写好的插件权限 sudo chmod 666 file_name。
3.进入docker
进入公司对应端口后端,密码cloudred
输入docker ps -a 显示所有容器
输入 docker exec -it ncprj_paas bash 执行对应容器
4.将文件移动到/cloudred/deploy/ncprj_paas/crnocode/deploy/ncprj_paas/目录下。
5.进入django的shell模式。
Python manage.py shell
6.引入文件,调用函数。
5.在后端修改插件:
1.勾选左下角floow terminal folder.
2.在左方目录右击文件,选择open with,选择编译器即可。
6.插件的日志打印
插件运行的时候,可以打印关键数据给前端,引入logger模块。
from base.utils.crlogger import logger
在前端页面右上角设置图标里,选择日志,即可看见打印的日志。
7.下载功能的实现
后端生成文件后将文件移动到/var/project/crnocode/media/download/down目录下,
前端调用后端插件,然后使用window.location
跳转到/media/document,即可下载文件.
三、如何调用后端插件
1.上传插件
进入编辑页面,点击左上角插件管理—>点击添加—>上传文件
即可上传文件
2.表单组件自定义按钮的调用
进入表单组件编辑页面—>列表配置—>右上角表格属性—>自定义按钮功能—>新建—>选择按钮名,调用服务器插件—>选择你的插件
3.在前端插件中调用后端插件
在前端插件中有封装好的方法,直接调用,修改一下插件ID即可。
async function call_service() {
const resp = await invokeBackPlugin(‘ingin_plug_in_id’, {
‘xplugin_func’: ‘plug_name’,
‘xplugin_data’: {}
})
}
#ingin_plug_in_id为插件id
#xplugin_func为插件函数名称
例子:
async function getPermitCards() {
const resp = await invokeBackPlugin(‘ingin_cpqAAnxbmGcpq4JeyCKKne’, {
‘xplugin_func’: ‘plug_in_find_all’,
‘xplugin_data’: {}
})
}