2016-10-02 4 views
1

URL을 통해 번호를 전달하고 다른 페이지에서 검색하려고합니다. 변수 유형을 지정하려고하면 잘못된 URL 오류가 발생하고 컴파일되지 않습니다. var 유형을 지정하지 않으면 변수는 실행되지만 변수는 유형 없음이됩니다. 나는 그것을 int로 던질 수 없다. 어떻게 그것을 정수로 전달할 수 있습니까? 미리 감사드립니다.플라스크 URL 변수 유형 없음?

이 나에게 잘못된 URL 오류 제공 :

@app.route('/iLike/<int: num>', methods=['GET','POST']) 
def single2(num): 

이 실행을하지만, 나에게 내가 함께 작업 할 수 없습니다 유형 없음의 VAR 제공 : 대신에, 두 번째 예에서

@app.route('/iLike/<num>', methods=['GET','POST']) 
def single2(num): 
    try: 
     location = session.get('location') 
     transType = session.get('transType') 
     data = session.get('data') 

     **num = request.args.get('num')** 
+2

'num'의 값은 자동으로 함수 인수로 함수에 전달됩니다. 요청 인수를 얻을 필요가 없습니다 (다른 곳에서도 보입니다. 따라서 값을 얻지 못합니다). – poke

답변

3

.

경로에 지정한 매개 변수는 경로 매개 변수이며 variable routes을 선언하는 방법입니다. 이 매개 변수의 값은 함수 인수로 라우트 함수에 전달됩니다. 그래서 귀하의 경우 <num> url 부분에 대해 값은 함수 인수 num으로 전달됩니다.

요청 인수는 경로와 독립적이며 GET 매개 변수로 URL에 전달됩니다. request object을 통해 액세스 할 수 있습니다. 이것은 request.args.get()으로 당신이하고있는 일입니다.

전체 예는 다음과 같습니다

@app.route('/iLike/<int:num>') 
def single2(num): 
    print(num, request.args.get('num')) 

열기 /iLike/123 지금 123 None 될 것입니다. 요청 인수가 지정되지 않았기 때문에 요청 인수는 비어 있습니다. /iLike/123?num=456을 열어이를 수행하면 123 456이됩니다.

1

num = request.args.get('num')num을 사용하십시오. 경로/기능의 입력으로 지정 했으므로 직접 경로에 액세스 할 수 있어야합니다.

1

이 시도 : 당신은 여기에 경로 매개 변수 및 요청 인수를 혼합하는

@app.route('/iLike/<int:num>', methods=['GET','POST']) 
def single2(num): 
    print(num) 
1

현재 None받을 :

num = request.args.get('num') 

당신은 쿼리 문자열의 요소로 num을 통과하지 않을 때문이다.

request.args.get('num')을 사용할 때?

우리는 이와 같은 URL을했을 경우

localhost:8080/iLike?num=2 

을하지만이 사건이 아니다. 이미 함수에 num을 인수로 전달합니다. 따라서 귀하의 경우에는 다음을 사용하십시오 :

@app.route('/iLike/<num>', methods=['GET','POST']) 
def single2(num): 
    try: 
     location = session.get('location') 
     transType = session.get('transType') 
     data = session.get('data') 

     print(num) 
관련 문제