Picbed Modules
钩子管理类
-
class
libs.hook.
HookManager
(app=None, hooks_dir='hooks', reload_time=600, third_hooks=None)[源代码] Receive initialization parameters and pass options to
init_app()
method.-
add_third_hook
(third_hook_name)[源代码] 添加第三方钩子
- 参数
third_hook_name (str) – 钩子可直接导入的模块名
-
call
(_funcname, _include=None, _exclude=None, _every=None, _mode=None, _args=None, _kwargs=None)[源代码] Try to execute the func method in all enabled hooks.
在 1.7.0 版更改: add param _mode and _every
在 1.9.0 版更改: _mode add any_false
1.8.0 版后已移除: _callback replaced by _every; args replaced by _args; kwargs replaced by _kwargs
-
call_intpl
(_tplname, _include=None, _exclude=None, **context)[源代码] 在模板中渲染
- 参数
_tplname (str or function) – 扩展点名称
_include (list) – 仅查找哪些钩子
_exclude (list) – 排除哪些钩子
- Kerword context
渲染模板时传递的变量
- 返回
Markup HTML
-
disable
(name)[源代码]
-
emit_assets
(hook_name, filename, _raw=False, _external=False)[源代码] 在模板中快速构建出扩展中静态文件的地址。
当然,可以用
flask.url_for()
代替。如果文件以 .css 结尾,那么将返回 <link> ,例如:
<link rel="stylesheet" href="/assets/hook/hi.css">
如果文件以 .js 结尾,那么将返回 <script> ,例如:
<script type="text/javascript" src="/assets/hook/hi.js"></script>
其他类型文件,仅仅返回文件地址,例如:
/assets/hook/img/logo.png /assets/hook/attachment/test.zip
以下是一个完整的使用示例:
<!DOCTYPE html> <html> <head> <title>Hello World</title> {{ emit_assets('demo','css/demo.css') }} </head> <body> <div class="logo"> <img src="{{ emit_assets('demo', 'img/logo.png') }}"> </div> <div class="showJsPath"> <scan> {{ emit_assets('demo', 'js/demo.js', _raw=True) }} </scan> </div> </body> </html>
- 参数
hook_name – 钩子名
filename (path) – 钩子包下static目录中的文件
_raw (bool) – True则只生成文件地址,不解析css、js,默认False
_external (bool) – 转发到url_for的_external
- 返回
html code with
Markup
1.9.0 新版功能.
-
enable
(name)[源代码]
-
get_call_list
(_callname, _include=None, _exclude=None, _type='all')[源代码]
-
init_app
(app)[源代码]
-
proxy
(name, is_enabled=True)[源代码] 代理到钩子中执行方法
- 参数
name (str) – 钩子名称,非其模块名
is_enabled (bool) – True表示仅从已启用钩子中查找方法,否则查找所有
-
reload
()[源代码]
-
remove_third_hook
(third_hook_name)[源代码]
-
通用方法
-
utils.tool.
rsp
(*args)[源代码] 使用 picbed: 前缀生成redis key
-
utils.tool.
get_current_timestamp
(is_float=False)[源代码] 获取当前时间戳
- 参数
is_float (bool) – True则获取10位秒级时间戳,否则原样返回
-
utils.tool.
parse_valid_comma
(s)[源代码]
-
utils.tool.
parse_valid_verticaline
(s)[源代码]
-
utils.tool.
parse_valid_colon
(s)[源代码]
-
utils.tool.
is_true
(value)[源代码]
-
utils.tool.
generate_random
(length=6)[源代码]
-
utils.tool.
check_url
(addr)[源代码] Check whether UrlAddr is in a valid format
-
utils.tool.
check_ip
(ip_str)[源代码]
-
utils.tool.
slash_join
(*args)[源代码] 用 / 连接参数
-
utils.tool.
gen_ua
()[源代码] 随机生成用户代理
-
utils.tool.
try_request
(url, params=None, data=None, headers=None, timeout=5, method='post', proxy=None, num_retries=1, _is_retry=False)[源代码] - 参数
params (dict) – 请求查询参数
data (dict) – 提交表单数据
timeout (int) – 超时时间,单位秒
method (str) – 请求方法,get、post、put、delete
proxy (str) – 设置代理服务器
num_retries (int) – 超时重试次数
_is_retry (bool) – 判定为重试请求,这不应该由用户发出
-
utils.tool.
is_all_fail
(l)[源代码] 从list下的dict拿出code!=0的(执行失败)数量
-
utils.tool.
bleach_html
(html, tags=None, attrs=None, styles=None)[源代码]
-
utils.tool.
is_valid_verion
(version)[源代码] Semantic version number - determines whether the version is qualified. The format is MAJOR.Minor.PATCH, more with https://semver.org
- 参数
version (str) – 版本号
适用Web环境的方法
-
@
utils.web.
login_required
[源代码] 页面要求登录装饰器
-
@
utils.web.
anonymous_required
[源代码] 页面要求匿名装饰器
-
@
utils.web.
apilogin_required
[源代码] 接口要求登录装饰器
-
@
utils.web.
admin_apilogin_required
[源代码] 接口要求管理员级别登录装饰器
-
utils.web.
get_site_config
()[源代码] 获取站点配置
-
utils.web.
set_site_config
(mapping)[源代码] 设置站点信息
-
utils.web.
sendmail
(subject, message, to)[源代码] 调用钩子中发送邮件函数(任意钩子发送成功即停止)
- 参数
subject (str) – 主题
message (str) – 正文(支持HTML)
to (str) – 收件人,可用逗号添加多个
-
utils.web.
make_email_tpl
(tpl, **data)[源代码] 制作邮件模板
- 参数
tpl – 模板文件(位于templates/email/下)
data – 模板所用变量
- 返回
jinja2渲染好的html内容
-
utils.web.
try_proxy_request
(url, **kwargs)[源代码] 自动调用代理服务的try_request
- 参数
url (str) – 请求地址
kwars –
utils.tool.try_request()
要求的其他参数
1.9.0 新版功能.
-
utils.web.
set_page_msg
(text, level='info')[源代码] 给管理员的控制台消息
- 参数
text (str) – 消息内容
level (str) – 级别,error、info(默认)、warn、success
1.9.0 新版功能.
-
utils.web.
get_page_msg
()[源代码] 生成消息Js,仅在管理员控制台页面闪现消息
-
utils.web.
get_user_ip
()[源代码] 首先从HTTP标头的X-Forwarded-For获取代理IP,其次获取X-Real-IP,最后是客户端IP
-
utils.web.
has_image
(sha)[源代码] 是否存在图片
-
class
utils.web.
Base64FileStorage
(b64str, filename=None)[源代码] 上传接口中接受base64编码的图片。
- 允许来自前端的Data URI形式:
-
class
utils.web.
ImgUrlFileStorage
(imgurl, filename=None, allowed_exts=None)[源代码] 上传接口中接受远程图片地址,会自动调用代理下载图片。
异常类
-
exception
utils.exceptions.
PicbedError
[源代码] 异常基类
-
exception
utils.exceptions.
ApiError
(message, code=- 1, status_code=200)[源代码] 触发Api异常,直接中止后续执行并返回JSON格式错误。
触发异常:
@app.route("/test") def test(): raise ApiError("Some message")
应用自动捕获ApiError异常并返回JSON类型响应:
{"code": -1, "msg": "Some message"}
- 参数
message (str) – 错误信息
code (int) – 错误码
status_code (int) – 请求响应码,如200、403、404
1.9.0 新版功能.
-
exception
utils.exceptions.
PageError
(message, code=- 1, status_code=200)[源代码] 触发页面异常,直接中止后续执行并返回错误页面,区别ApiError的是, 处理PageError是显示一个错误页面。
1.9.0 新版功能.