Appearance
插件动态路由
前言:插件动态路由不继承面板会话权限,需开发者自己在插件(_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’)