Flask - 动态URL

时间:2014-01-26 01:08:54

标签: python url flask

当我执行太多动态网址时,我的样式表就会停止工作。例如。我的样式表位于/static/css/style.css

下的layout.html文件中

代码:

#works
@app.route('/<var1>', methods=['blah'])
def someFunc(var1):
    # code

#works
@app.route('/<var1>/<var2>', methods=['blah'])
def someNewFunc(var1, var2):
    # code

#no errors displayed but my stylesheet stops loading
@app.route('/<var1>/<var2>/<var3>', methods=['blah'])
def finalFunc(var1, var2, var3):
    # code

所以我有两个问题。首先,Flask不支持过去的两个动态URL吗?第二,有没有更好的方法来解决这个问题(即我应该遵循一个约定)?

1 个答案:

答案 0 :(得分:1)

问题是您的路线不明确。当浏览器在/static/css/style.css请求样式表时,Flask会找到两个匹配的路径:

  • /static/<path:path>path=css/style.css
  • /<var1>/<var2>/<var3>var1=staticvar2=cssvar3=style.css

Flask和Werkzeug使用的路由算法在多个路由匹配时更喜欢最长的路由,并且第二个路由获胜。

this question的答案显示了使用自定义路由转换器解决此问题的可能方法。

但我建议您更改动态网址,使其不那么通用。您可以向其添加固定组件,例如/some-prefix/<var1>/<var2>/<var3>