2016-08-28 19 views
0

내 경로 방법은 내가 링크를 클릭하면url_for() 매개 변수가 플라스크에 무시되었습니다

<li><a href="{{ url_for('movie',page_num=page_num) }}">{{ page_num }}</a></li> 

는 주소 표시 줄은 "127.0.0.1을 보여줍니다 : 5000/영화/PAGE_NUM = 5 "하지만 pagination.page이 매개 변수를 무시하고 시간 한 이유는 여전히 페이지에서 1.

보여줍니다? 내가 고칠 수 있을까?

+1

당신의 페이지 매김 로직이 깨진 것처럼 아닌' –

+0

전화 url_for' 소리가해야 127.0 수 127.0.0.1:5000/movie/?page_num=5하지 .0.1 : 5000/movie? page_num = 5, 경로/movie/=>/movie 인 여분의 백 슬래시를 제거하십시오. – reticentroot

+0

인위적으로 백 슬래시를 제거하려고 시도했지만 백 슬래시가 다시 나타납니다. @ reticentroot –

답변

2

함수의 코드를 건너 뛰었으므로 잘못되었다고 말하기가 어렵습니다. 그러나 나는 GET 매개 변수를 올바르게 catch하지 않는다고 생각합니다. 이렇게하려면 경로에 동적 이름 구성 요소 인 variable rules을 사용할 수 있습니다. 또는 URL에 제출 된 액세스 매개 변수는 request.args.get입니다.

여기 boths 방법을 보여주는 최소한의 예입니다 :

from flask import Flask, url_for, request 
app = Flask(__name__) 

@app.route('/') 
def index(): 
    link = url_for('movie',page_num=5) 
    return "<a href='{0}'>Click</a>".format(link) 

@app.route('/index2') 
def index_get(): 
    link = url_for('movie_get',page_num=5) 
    return "<a href='{0}'>Click</a>".format(link) 


@app.route('/movie/<page_num>') 
def movie(page_num=1): 
    return str(page_num) 

@app.route('/movie_get') 
def movie_get(): 
    param = request.args.get('page_num', '1') 
    return str(param) 

if __name__ == '__main__': 
    app.run(debug=True) 
+0

예 !! 나는 내가 GET 매개 변수와 * request.args.get *을 잡아 내지 못했다는 것을 발견했다. 그리고 영화 메서드를 호출하기 위해 * url_for * 만 사용할 수 있습니까? –

+0

'url_for '를 가진 @YanchengZeng 호출 함수는 템플릿을 렌더링하고 페이지 매김을해야하는 라우팅 함수로 할 가능성이 가장 큽니다. 그러나 당신이 당신이 '영화'기능으로 달성하고자하는 것과 함께 또 다른 특정 질문을 게시하는 것이 더 낫다고 생각합니다. – vrs

+0

/movie_get에 대한 라우팅 예제는 HREF 링크를 클릭했을 때 유용했습니다. 그러나 내가 GET을 양식에 포함 시키려면 어떻게해야합니까? 예 :'

. 이것은 화면에 인쇄되지 않았습니다. ''1 ''이 인쇄되었습니다. 왜? –