当我使用太多动态 URL 时,我的样式表将停止工作。例如。我的样式表位于/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吗?其次,是否有更好的方法来解决这个问题(即是否有我应该遵循的约定)?
最佳答案
问题是你的路线不明确。当浏览器在 /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的答案展示了使用自定义路由转换器解决此问题的可能方法。
但我的建议是您更改动态 URL,使其不那么通用。您可以为其添加固定组件,例如 /some-prefix/<var1>/<var2>/<var3>
.
关于python - Flask - 动态 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21358373/