【问题标题】:Catch all routes for Flask [duplicate]捕获 Flask 的所有路线 [重复]
【发布时间】:2018-01-28 09:17:15
【问题描述】:

我将 Flask 与 React 一起使用。我想创建一个类似于这样的捕获所有路线(尽管这不起作用):

@app.route('*')
def get():
    return render_template('index.html')

由于我的应用程序将使用 React 并且它使用 index.html 来挂载我的 React 组件,我希望每个路由请求都指向我在模板中的 index.html 页面。有没有办法做到这一点(或者使用重定向是最好的方式)?

【问题讨论】:

    标签: python flask


    【解决方案1】:

    您可以遵循以下准则:https://flask.palletsprojects.com/en/1.1.x/api/#url-route-registrations

    from flask import Flask
    app = Flask(__name__)
    
    @app.route('/', defaults={'path': ''})
    @app.route('/<path:path>')
    def catch_all(path):
        return 'You want path: %s' % path
    
    if __name__ == '__main__':
        app.run()
    

    【讨论】:

    • 有谁知道这是否会捕获所有其他未指定的路由路径,或者它是否会覆盖其他更具体的路由?就像如果在此上方我有一条通往 /mypath 的路线,它还会在那里还是会通过捕获所有内容来推翻它?
    • @theferrit32 你仍然可以使用其他路由,所以/mypath 应该仍然有效。只有未定义的路径会被重新路由到包罗万象的路径。
    • 我在提供的 url 中没有看到相同的路由模式,而且这条路由仅适用于 /,使用其他东西返回 404。可能的原因是什么?
    • 不适用于 POST 请求。
    • 它工作得很好,但如果你有一些设置来处理静态内容,它就不起作用了。例如: Flask(name,static_url_path='',static_folder='web/static', template_folder='web/templates') 我认为问题出在 static_url_path 设置上。
    猜你喜欢
    • 2015-04-19
    • 2012-06-12
    • 2016-10-19
    • 1970-01-01
    • 1970-01-01
    • 2019-06-29
    • 2021-11-11
    • 2013-05-07
    • 1970-01-01
    相关资源
    最近更新 更多