2014-01-26 2 views
1

동적 URL이 너무 많으면 스타일 시트가 작동하지 않습니다. 예를 들어.플라스크 - 동적 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 

가 그래서있어 두 가지 질문 : 내 스타일 시트는 /static/css/style.css

코드에서 내 layout.html 파일에 있습니다. 먼저 Flask가 동적 URL을 2 회 이상 지원하지 않습니까? 둘째로, 이것에 관해 더 좋은 방법이 있습니까 (즉 내가 따라야 만하는 대회가 있습니까?)

+0

왜 스타일 시트가보기를 통과합니까? 'url_for ('static', filename = 'css/style.css')'가 당신을 대신해 처리 할 것입니다. – dirn

답변

1

문제는 경로가 모호하다는 것입니다. /static/css/style.css 플라스크는 두 개의 일치하는 경로 발견에 브라우저가 스타일 시트를 요청하는 경우 : 플라스크에 사용 var1=static, var2=cssvar3=style.css

라우팅 알고리즘 path=css/style.css

  • /<var1>/<var2>/<var3>

    • /static/<path:path> 및 WERKZEUG 가장 긴 선호 경로가 여러 개일 경우 두 번째 경로가 승리합니다.

      this question에 대한 대답은 사용자 지정 경로 변환기를 사용하여이 문제를 해결할 수있는 방법을 보여줍니다.

      하지만 너무 일반적인 것이 아니기 때문에 동적 URL을 변경하는 것이 좋습니다. 고정 된 구성 요소를 추가 할 수 있습니다 (예 : /some-prefix/<var1>/<var2>/<var3>).