当我执行太多动态网址时,我的样式表就会停止工作。例如。我的样式表位于/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吗?第二,有没有更好的方法来解决这个问题(即我应该遵循一个约定)?
答案 0 :(得分:1)
问题是您的路线不明确。当浏览器在/static/css/style.css
请求样式表时,Flask会找到两个匹配的路径:
/static/<path:path>
与path=css/style.css
/<var1>/<var2>/<var3>
与var1=static
,var2=css
和var3=style.css
Flask和Werkzeug使用的路由算法在多个路由匹配时更喜欢最长的路由,并且第二个路由获胜。
this question的答案显示了使用自定义路由转换器解决此问题的可能方法。
但我建议您更改动态网址,使其不那么通用。您可以向其添加固定组件,例如/some-prefix/<var1>/<var2>/<var3>
。