以 X 开头的路径的 Flask 应用程序路由
Flask app route for paths that start with X
我是 Flask 和 python 的初学者。我想为以“/favicon”开头的路径创建一个处理函数。例如,应处理以下内容:
- /网站图标
- /faviconFOO
- /favicon_bar
- /favicon/buzz
- /favicon1337
不应处理以下内容:
- /收藏夹
- /收藏夹
- /随便
如果 Flask 支持通配符,它将是“/favicon*”
编辑:我不需要正则表达式支持。
我该怎么做?
我会做一个 catch-all
url,然后尝试从视图内部使用 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 站点中的 routing 文档。而且你 should
创建了一个比 if x in Y
更好的条件,因为如果你通过了 /thingfavicon
这样的东西,它就会失败
我是 Flask 和 python 的初学者。我想为以“/favicon”开头的路径创建一个处理函数。例如,应处理以下内容:
- /网站图标
- /faviconFOO
- /favicon_bar
- /favicon/buzz
- /favicon1337
不应处理以下内容:
- /收藏夹
- /收藏夹
- /随便
如果 Flask 支持通配符,它将是“/favicon*”
编辑:我不需要正则表达式支持。
我该怎么做?
我会做一个 catch-all
url,然后尝试从视图内部使用 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 站点中的 routing 文档。而且你 should
创建了一个比 if x in Y
更好的条件,因为如果你通过了 /thingfavicon