2017-10-17 107 views
0

我是一个初学者,烧瓶python。我想为以“/ favicon”开头的路径创建一个处理函数。例如,下面应处理:以X开头的路径的烧瓶应用路由

  • /图标
  • /faviconFOO
  • /favicon_bar
  • /图标/蜂鸣
  • /favicon1337

下列不应当被处理:

  • /favico
  • /图标
  • /不管

如果瓶supporeted通配符,这将是 “/ *图标”

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

我该怎么做?

+0

它会失败,你想所有的路线:'favicon','faviconFOO','favicon_bar'等指向相同的句柄,那么你可以看看在这[线程](https://stackoverflow.com/questions/5870188/does-flask-support-regular-expressions-in-its-url-routing) – ZdaR

+0

是的。如果这是一个通配符,它​​将是/ favicon * –

+0

我不会说它是重复的,因为它比另一个问题更具特色。此外,我不在乎它是否使用正则表达式解决。 –

回答

1

我会做一个catch-all URL,然后,尝试使用与它wildcard从视图中:

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

您可以使用string太:

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

但使用string止跌” t赶上/串。所以如果使用字符串,url's含有类似favicon/buzz不会被它缓存,path另一方面也会赶上/的。所以你应该选择第一个选项。

你可以在烧瓶站点查看routing文档。你should创建一个比if x in Y更好的条件,因为如果你通过像/thingfavicon