Python 你可以在每条路线上做些什么

Python 你可以在每条路线上做些什么,python,flask,Python,Flask,我有一个flask应用程序,我必须在其中删除和更新用户信息,如下所示(简化): 这相当麻烦,而且由于我将拥有更多依赖于用户的函数,因此我想知道是否有可能在调用这些路由时自动执行另一个函数来包装该块 提前感谢。在请求前使用钩子功能参见 编辑: 我试过这个 from flask import Flask, request app = Flask(__name__) db = ['paul', 'steve', 'anna'] @app.before_request def before_requ

我有一个flask应用程序,我必须在其中删除和更新用户信息,如下所示(简化):

这相当麻烦,而且由于我将拥有更多依赖于用户的函数,因此我想知道是否有可能在调用这些路由时自动执行另一个函数来包装该块


提前感谢。

在请求前使用
钩子功能参见

编辑:

我试过这个

from flask import Flask, request
app = Flask(__name__)

db = ['paul', 'steve', 'anna']

@app.before_request
def before_request():
    if request.endpoint in ['show_user', 'delete_user', 'update_user']:
        user = request.path[request.path.rfind('/') + 1:]
        if user not in db:
            return 'user not found', 404

@app.route('/<user>')
def show_user(user):
    """ Show user information """
    return 'hello %s' % user

@app.route('/other')
def show_other():
    """ Demonstrates other routes are not effected by before_request """
    return 'other stuff'

if __name__ == "__main__":
    app.run()
从烧瓶导入烧瓶,请求
app=烧瓶(名称)
db=['paul','steve','anna']
@请求前的应用程序
请求前定义():
如果[show_user]、[delete_user]、[update_user]中的request.endpoint:
user=request.path[request.path.rfind('/')+1:]
如果用户不在数据库中:
返回“未找到用户”,404
@应用程序路径(“/”)
def显示用户(用户):
“”“显示用户信息”“”
返回“hello%s”%user
@应用程序路径(“/其他”)
def show_other():
“”“演示其他路由不受前\u请求的影响”“”
返回“其他内容”
如果名称=“\uuuuu main\uuuuuuuu”:
app.run()
它实际上并不像我希望的那么整洁,但它很管用


在请求之前,必须维护哪些端点在
函数中做什么,这有点遗憾。如果您正在这样做,您可能能够将这些端点合并为一个端点,并且只需为每个操作使用不同的http方法。

听起来像是装饰师的工作。如果在发出请求之前我知道我正在处理哪个用户,那么这将起作用。但由于用户是从URL传递的,因此我无法执行此操作。您可以在此调用中访问请求对象。非常感谢,这非常有帮助:)
if user not in mydb:
    do(something)
    abort(404)
@app.before_request
def before_request():
    if user not in mydb:
    do(something)
    abort(404)
from flask import Flask, request
app = Flask(__name__)

db = ['paul', 'steve', 'anna']

@app.before_request
def before_request():
    if request.endpoint in ['show_user', 'delete_user', 'update_user']:
        user = request.path[request.path.rfind('/') + 1:]
        if user not in db:
            return 'user not found', 404

@app.route('/<user>')
def show_user(user):
    """ Show user information """
    return 'hello %s' % user

@app.route('/other')
def show_other():
    """ Demonstrates other routes are not effected by before_request """
    return 'other stuff'

if __name__ == "__main__":
    app.run()