gpt4 book ai didi

Flask框架各种常见装饰器示例

转载 作者:qq735679552 更新时间:2022-09-27 22:32:09 28 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章Flask框架各种常见装饰器示例由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.

本文实例讲述了Flask框架各种常见装饰器。分享给大家供大家参考,具体如下:

效果类似django的process_request的装饰器 。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
@app .before_request
def before( * args, * * kwargs):
   print ( '请求之前' )
   '''
   如果允许通过访问,可以return None
   该装饰器装饰的函数如果有return其他内容则直接结束访问,
   效果有点类似django的process_reqeust中间件方法。
   比如通过这个装饰器写登陆验证,判断其是否有session,没有则不允许访问,有则继续访问
   然后通过request.path判断访问的函数,如果是登陆(白名单)则通过。
   request.url 是完整的url
   request.path是域名后面的url正则
   '''
   if request.path = = '/login' :
     return None
   user = session.get( 'user_info' )
   if user:
     return None
   return redirect( '/login' )

类似process_response 。

?
1
2
3
4
5
@app .after_request
def after(response):
   #效果和process_response是一样的,必须有返回值,没有则报错。
   print ( '我走了' )
   return response

flask中间件装饰器执行顺序.

如果多个app.before_request和app.after_request, 。

那么执行顺序也和django类似, 。

app.before_request是按照从上而下执行(文件的上下),app.after_request是自下而上执行.

如果在app.before_request中return了其他内容,请求被拦截,那么不会执行视图函数, 。

直接从最后一个app.after_reqeust倒着开始执行所有after_request.

自定义错误页面:

?
1
2
3
4
@app .error_handlers( 404 )
def error_404(arg):
   '''自定义错误页面,根据状态码定制'''
   return "404错误啦"

模板中定制方法:

前端直接调用后端函数的装饰器:

?
1
2
3
4
5
6
@app .template_global()
def xx(a1,a2):
   return a1 + a2
'''
这个装饰器的作用就是,可以在前端直接通过{{ xx(1,2)}}来调用后端的这个函数。
'''

相当于filter的装饰器 。

?
1
2
3
4
5
6
7
@app .template_filter()
def db(a1,a2,a3):
   return a1 + a2 + a3
'''
效果和django的Filter相似,前端渲染的时候需要注意写法
{{ 1|db(2,3)}} 1是第一个参数,后面是2,3参数。
'''

第一次来请求操作的装饰器:

?
1
2
3
4
5
6
@app .before_first_request
def first( * args, * * kwargs):
   pass
'''
只有第一次请求时候才执行的函数装饰器
'''

Flask的中间件一般感觉用处不大,不如装饰器方便 。

Flask框架各种常见装饰器示例

通过重新复制app.wsgi_app, 。

重写这个类的__call__方法,如上图,只是增加了两个打印,效果同process_request,process_response 。

希望本文所述对大家Python程序设计有所帮助.

原文链接:https://www.cnblogs.com/ArmoredTitan/p/8878124.html 。

最后此篇关于Flask框架各种常见装饰器示例的文章就讲到这里了,如果你想了解更多关于Flask框架各种常见装饰器示例的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com