我想创建一个装饰为Flask路线标志某些航线为public,这样我就可以做这样的事情:创建瓶公共URL装饰
@public
@app.route('/welcome')
def welcome():
return render_template('/welcome.html')
在其他地方,这里就是我在想装饰和检查会是什么样子:
_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
然后当一个请求时,我有检查requested_url_is_public
上下文功能。
我有点难住,因为我不知道如何获得public
装饰器中给定函数的url规则。
也许这不是Flask的最佳设计选择,但我希望有另一个简单的&优雅的方式来实现这一点。
我以前见过这种模式,想模仿它。例如,这是Django的login_required
修饰器的对应物。
我很喜欢读这方面的想法。
魔术!为此欢呼。 –
糟糕 - 我只是意识到,尽可能接近我想要的,我不太确定这是我需要的答案。我有大约4个公共网站和100多个私人网站。我不想污染代码w /'@ login_required',所以我想有一个例如'before_request',否认所有的公共请求,除非在视图上有'@ public'。我希望你能明白为什么这不是答案,但你发布的内容绝对是一个很好的领先。如果我拿出答案,我会标记这个正确的,并发布我所做的。干杯。 –