Skip to content

插件动态路由

前言:插件动态路由不继承面板会话权限,需开发者自己在插件(_check 方法)中做好访问权限的控制,请谨慎使用
访问方式:

http://面板地址:端口/插件名称/被访问的插件方法.响应类型(html|json)

名词解释:

插件名称: info.json 中的 name 字段值
被访问的方法: 插件控制器类中的方法名称,如 demo_main 类中的 get_logs
响应类型: html 以模板的方式响应 json 响应 json 数据,若不加.(html|json)则原样输出插件方法返回的数据

插件静态文件

主要用于访问插件中要用上的 js/css/字体/html 等,请不要将重要数据放到静态目录静态目录名称: static
访问示例
如要访问 demo 插件以下路径的静态文件: ./static/js/test.js

http://demo.cn:8888/demo/static/js/test.js

使用模板

宝塔面板中使用 jinja2 模板引擎渲染模板,要在插件中使用 jinja2 模板,需在插件目录下创建templates 目录,并创建对应方法的模板文件
注意:在插件模板中支持 jinja2 语法,但无法使用 extends 语句
模板包含(>=6.9.19 测试版 或 >=6.9.5 正式版)
创建头部文件 ./templates/head.html
在模板任意位置插入包含语句 {% include “head.html” %}
模板响应过程
用户请求 >> 检查访问权限(_check|login) >> 检查模板是否存在>> 执行方法>> 输出模板变量

关于模板变量

插件方法返回的数据将被传递到 data 变量中,请尽量在插件方法在构造dict 返回给模板,在模板中请通过 data 变量来访问对应的数值

使用示例:

使用模板的方式访问 demo 插件中的 get_logs 方法
1、创建模板文件 ./templates/get_logs.html 内容

html
<p>{{data['test']}}</p>

2、编写 get_logs 方法:

python
def get_logs(self,args):  
return {‘test’:’test’}

3、以模板的方式请求: http://demo.cn:8888/demo/get_logs.html
4、响应内容 test

开发 Ajax 接口(响应 JSON)

要开发 ajax 接口,仅需要以 json 的响应类型访问即可,面板会自动将插件方法的返回值系列化为JSON字符串响应使用示例:
http://demo.cn:8888/demo/get_logs.json

自定义响应

访问方式:http://demo.cn:8888/demo/get_logs

重定向

示例代码:

python
from flask import redirect #引用重定向对象
def get_logs(self,args):
return redirect(‘/login’,302) #返回重定向对象重定向代码支持(302|301|303|305|307)
直接输出 HTML
示例代码:
def get_logs(self,args):
html_body =<html></html>
return html_body
输出文件
示例代码:
from flask import send_file #引用文件发送对象
def get_file(self,args):
return send_file(‘./test.zip’)

仅用于培训和测试,通过使用本站代码内容随之而来的风险与本站无关。版权所有,未经授权请勿转载,保留一切权利。
ICP备案号:滇ICP备15009214号-13   公安网备:滇公网安备 53312302000061号