我是Flask和python的初学者。我想为以"/favicon"开头的路径创建一个处理程序函数。例如,应处理以下内容:
- /网站图标
- /faviconFOO
- /favicon_bar /
- favicon/buzz
- /favicon1337
不应处理以下情况:
- /法维科
- /favicoN
- /无论什么
如果 Flask 支持通配符,它将是"/favicon*"
编辑:我不需要支持正则表达式。
我该怎么做?
我会做一个catch-all
的网址,然后尝试从视图中使用它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
不会捕获/
字符串。 因此,如果使用字符串,包含类似 favicon/buzz
的东西url's
不会被它缓存,另一方面path
也会捕获/
。 所以你应该选择第一个选项。
您可以在 Flask 站点中查看路由文档。 并且您should
创建一个比if x in Y
更好的条件,因为如果您传递了类似 /thingfavicon