【问题标题】:Call a Flask Blueprint route using a string (as route) from before_request使用 before_request 中的字符串(作为路由)调用 Flask 蓝图路由
【发布时间】:2018-01-23 11:49:49
【问题描述】:

我需要使用我的 python 代码实现以下目标: 每当一个新请求到来时,比如 /someurl1,它应该使用下面代码中给出的 URL 调用 category_route。

@app.before_request
def before_request():
    url = '/category/c6f8f568-0a25-4ea7-999c-20099effa5f1'
    # Now here I need a piece of code which calls the below route's method, with above url.


@category.route('/category/<category_id>', methods=['GET'])
def category_route(category_id):
    return {"status": "in category"}

现在应该重定向页面。

【问题讨论】:

    标签: python flask


    【解决方案1】:

    如果您想要重定向,可以使用redirect。我建议您不要为此使用before_request

    @app.route('/someurl1')
    def someurl():
        url = '/category/c6f8f568-0a25-4ea7-999c-20099effa5f1'
        return redirect(url)
    
    @category.route('/category/<category_id>', methods=['GET'])
    def category_route(category_id):
        return {"status": "in category"}
    

    如果你实际上并不想重定向,而只是返回你其他视图的返回值,你可以直接调用该函数:

    @app.before_request
    def before_request():
        category_id = 'c6f8f568-0a25-4ea7-999c-20099effa5f1'
        return category_route(category_id)
    
    @category.route('/category/<category_id>', methods=['GET'])
    def category_route(category_id):
        return {"status": "in category"}
    

    【讨论】:

    • 我实际上不希望页面被重定向。那么,您知道一种无需重定向即可调用此路由的方法吗?
    • 我在回答中添加了另一种方法。
    • 其实我希望它直接使用路由调用。因为我在数据库中有一个映射新旧路线。所以当我得到 /someurl1 时,我检查数据库并得到 '/category/c6f8f568-0a25-4ea7-999c-20099effa5f1' 作为新的 url。我想使用从 db 接收到的(路由的)字符串直接调用蓝图路由。
    • 哦,好的。也许这会有所帮助:stackoverflow.com/questions/38488134/…
    猜你喜欢
    • 2015-07-05
    • 1970-01-01
    • 2021-08-04
    • 2016-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-23
    • 2021-02-21
    相关资源
    最近更新 更多