Bri*_*unt 8 python decorator werkzeug flask
我想为Flask路由创建一个装饰器,将某些路由标记为public,所以我可以这样做:
@public
@app.route('/welcome')
def welcome():
return render_template('/welcome.html')
Run Code Online (Sandbox Code Playgroud)
在其他地方,这是我在想装饰器和检查看起来像:
_public_urls = set()
def public(route_function):
# add route_function's url to _public_urls
# _public_urls.add(route_function ...?.url_rule)
def decorator(f):
return f
def requested_url_is_public():
from flask import request
return request.url_rule in _public_urls
Run Code Online (Sandbox Code Playgroud)
然后,当发出请求时,我有一个检查的上下文函数requested_url_is_public.
我有点难过,因为我不知道如何在public装饰器中获取给定函数的url规则.
也许这不是Flask的最佳设计选择,但我希望有另一种简单而优雅的方式来实现这一目标.
我以前见过这样的模式,想模仿它.例如,这与Django的login_required装饰者相对应.
我喜欢读这个想法.
| 归档时间: |
|
| 查看次数: |
1755 次 |
| 最近记录: |