2

我是Flaskpython的初学者。我想为以“/favicon”开头的路径创建一个处理函数。例如,应处理以下内容:

  • /网站图标
  • /faviconFOO
  • /favicon_bar
  • /favicon/嗡嗡声
  • /favicon1337

不应处理以下情况:

  • /favico
  • /favicon
  • /任何

如果 Flask 支持通配符,它​​将是“/favicon*”

编辑:我不需要支持正则表达式。

我怎样才能做到这一点?

4

1 回答 1

10

我会做一个catch-allurl,然后尝试wildcard从视图内部使用它:

@app.route('/<path:text>', methods=['GET', 'POST'])
def all_routes(text):
    if text.startswith('favicon'):
        #do stuff
    else:
        return redirect(url_for('404_error'))

你也可以使用string

@app.route('/<string:text>', methods=['GET'])

但使用string不会捕获/字符串。所以如果使用 string ,url's包含类似的东西favicon/buzz不会被它缓存,path另一方面也会 catch /。所以你应该选择第一个选项。

您可以查看烧瓶站点中的路由文档。你should创造了一个更好的条件而不是if x in Y因为如果你通过了类似的东西它会失败/thingfavicon

于 2017-10-17T07:53:41.350 回答