2014-03-02 1 views
0

내 응용 프로그램에 2 개의 (유사한) 경로가 있습니다. 하나는 하나의 이미지가있는 페이지 용이고 다른 하나는 여러 개의 이미지가있는 페이지 용입니다. 그들이 그들에게 전화 기능에술병 - 별난 라우팅 및 URL 오류?

@app.route('/<routing_id>') 
def display_image_page(routing_id): 
    stuff 
    return render_template("image-page.html", template variables go here) 

@app.route('/<gallery_routing>') 
def display_gallery(gallery_routing): 
    other stuff 
    return render_template("gallery-page-vertical.html", other template vars) 

: 라우트는 다음과 같이 고유 한 URL을 만들기 위해 사용되는 변수는 무작위로 routing_id (단일 이미지 페이지) 7 개 문자이며, 생성되고 gallery_routing 6. 입니다 내가 그 URL이 때도 실행되지 말았어야 함수에서 데이터베이스 오류가 좋아, 내가 이상한 오류를 얻을 이러한 URL에 액세스하려고하면

url_for('display_image_page', routing_id=routing_id) 

url_for('display_gallery', gallery_routing=gallery_routing) 

, 내 응용 프로그램을 테스트하는 동안 : 다른 URL을 같이 생성 방문했거나 단순한 404. 이 URL이 매핑되는 모든 것은 몇 가지 기능을 수행하는 것으로서 render_template을 반환합니다. 나는 URL 조금 처음에 후행 슬래시 및 슬래시의 또 다른 부부와 두 번째 (NO 후행 슬래시) 전에 일부 텍스트를 추가하여 최대 규칙을 변경하는 경우, 그들은 완벽하게 작동 :

@app.route('/<routing_id>/') 

@app.route('/arbitrary_text/<gallery_routing>') 

무엇 여기까지가는거야? 파일에 직접 액세스하지 않고 파일을 표시하는 페이지 만 표시하므로 왜 슬래시가 변경됩니까? 나는이 중 하나에 후행 슬래시를 원하지 않으며, 내 gallery_routing 앞에 다른 하위 디렉토리를 갖고 싶지 않습니다. 내 응용 프로그램에는 약 3 개의 다른 경로가 있습니다. 다음과 같은 정적 페이지에만 있습니다.

모두 잘 작동합니다. 작동하지 않는 것으로 보이는 유일한 변경 사항은 URL 규칙의 변수입니다. 차이점이 있다면 다른 경로 (실제 이미지 파일에 대한 링크)에 대한 하위 도메인을 사용하고 있고 맞춤 서버 이름을 사용하고 있으므로 http://local.dev:5000/에서 앱에 액세스하고 있지만 돈이 없습니다. 이것이 어떻게 사물을 바꾸는 지 보지 않겠습니까? URL 구축에 관한 문서를 읽었으며 아무 도움도 찾을 수 없습니다. 고맙습니다.

답변

1

@app.route('/<routing_id>') 또는 @app.route('/<gallery_routing>')이라고 말하면 다른보기에서 동일한 URL 패턴을 관리하려고합니다.

봐 :

/abracadabra -> /<routing_id> 
    ---> routing_id = abracadabra 
/abracadabra -> /<gallery_routing> 
    ---> gallery_routing = abracadabra 

앱은 당신이 무슨 뜻인지 추측 할 수

물론,이

@app.route('/<routing_id>/') 
@app.route('/arbitrary_text/<gallery_routing>') 

/arbitrary_text/abracadabra -> /<routing_id> 
    -x-> routing_id = abracadabra 
/arbitrary_text/abracadabra -> /arbitrary_text/<gallery_routing> 
    ---> gallery_routing = abracadabra 

때문에 아무것도 작동하지 이상한