Flask URL Route:将所有其他 URL 路由到某个函数

Posted

技术标签:

【中文标题】Flask URL Route:将所有其他 URL 路由到某个函数【英文标题】:Flask URL Route: Route All other URLs to some function 【发布时间】:2012-12-11 00:35:14 【问题描述】:

我正在使用 Flask 0.9。我有使用 Google App Engine 的经验。

    在 GAE 中,网址匹配模式按照它们出现的顺序进行评估,先到先得。 Flask 中是不是也一样?

    在 Flask 中,如何编写一个 url 匹配模式来处理所有其他不匹配的 url。在 GAE 中,你只需要把/.* 放在最后,比如:('/.*', Not_Found)。由于 Flask 不支持 Regex,如何在 Flask 中做同样的事情。

【问题讨论】:

【参考方案1】:
    我想这就是答案http://flask.pocoo.org/docs/design/#the-routing-system

    如果您需要处理服务器上未找到的所有 url — 只需创建 404 处理程序:

    @app.errorhandler(404)
    def page_not_found(e):
        # your processing here
        return result
    

【讨论】:

【参考方案2】:

这适用于您的第二个问题。

from flask import Flask

app = Flask(__name__)

@app.route('/')
def index():
    return 'This is the front page'

@app.route('/hello/')
def hello():
    return 'This catches /hello'

@app.route('/')
@app.route('/<first>')
@app.route('/<first>/<path:rest>')
def fallback(first=None, rest=None):
    return 'This one catches everything else'

path 将捕获所有内容直到结束。 More about the variable converters.

【讨论】:

我一直在尝试这个。事实证明,路线 '/' 不起作用。实际有效的是 '//' 以及覆盖 '/' 情况的额外路线,如 this gist 所示

以上是关于Flask URL Route:将所有其他 URL 路由到某个函数的主要内容,如果未能解决你的问题,请参考以下文章

Flask | Flask基础 - URL与视图

python_flask 基础巩固 (URL传输传递方式)

8Flask实战第8天:add_url_rule和app.route原理

flask_之URL

flask的路由

flask框架——路由系统route转换成add_url_rule及源码分析