我开始在Python Flask的所有路径中弹出此问题:
@defaults.app.route('/<path:path>')
@forceUpdate
@FlaskLogin.login_required
@gzipped
def serve_page(path):
try:
resp = flask.send_from_directory(defaults.APP_STATIC, path)
return resp
except Exception:
return flask.render_template("index.html")
有更好的方法吗?
forceUpdate
装饰器根据文件系统上的标志强制重定向。
登录需要用户登录。
并且Gzip ...... gzips回应。
到目前为止,我有大约20条路线,所有这些装饰组合都变得丑陋。
答案 0 :(得分:0)
您可以创建一个适用于其他人的新装饰器:
from functools import reduce
_common = (gzipped, FlaskLogin.login_required, forceUpdate)
def common_decorators(f):
return reduce(lambda f, dec: dec(f), _common, f)
然后只使用那个装饰器:
@defaults.app.route('/<path:path>')
@common_decorators
def serve_page(path):
...