2014-01-26 172 views
1

當我做了太多的動態URL時,我的樣式錶停止工作。例如。我的樣式表是我的layout.html文件下/static/css/style.css燒瓶 - 動態URL

代碼:

#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

爲什麼你的樣式表經歷了一個視圖? 'url_for('static',filename ='css/style.css')'會爲你照顧。 – dirn

回答

1

問題是你的路線不明確。當瀏覽器請求您的樣式表在/static/css/style.css瓶找到兩張匹配的路由:

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

路由算法通過瓶使用,WERKZEUG喜歡最長當多個匹配的路線,並使第二個勝利。

this question的回答顯示了使用自定義路由轉換器解決此問題的可能方法。

但我的建議是,你改變你的動態網址,以便它不是那麼通用。您可以向其添加固定組件,例如/some-prefix/<var1>/<var2>/<var3>