2012-08-02 2 views
214

쿼리 문자열을 얻는 방법에 대한 플라스크 문서에서 분명하지 않습니다. 나는 새로운 문서를보고 찾지 못했습니다!Flask에서 쿼리 문자열을 어떻게 구합니까?

그래서

@app.route('/') 
@app.route('/data') 
def data(): 
    query_string=?????? 
    return render_template("data.html") 
+9

설명서의 내용은 다음과 같습니다. http://flask.pocoo.org/docs/quickstart/#the-request-object – Jarus

답변

407
from flask import request 

@app.route('/data') 
def data(): 
    # here we want to get the value of user (i.e. ?user=some-value) 
    user = request.args.get('user') 
+33

이 예에서는 쿼리 문자열에 전달 된 "user"매개 변수의 값을 반환합니다. 쿼리 문자열 자체. "쿼리 문자열"은 물음표 뒤와 파운드 기호 앞에 모든 문자가 있음을 의미합니다. –

+18

여전히 유용 답변은 그것이 질문에 관련되어 고려하십시오. 유효하고 +1 – Necronet

+1

사용자가없는 경우 예외가 발생합니까? (args가 단지 dict 일지는 모른다.) –

152

전체 URL이 request.url로 사용할 수 있으며, 쿼리 문자열이 request.query_string로 사용할 수 있습니다.

from flask import request 

@app.route('/adhoc_test/') 
def adhoc_test(): 

    return request.query_string 

쿼리 문자열에 전달 된 개별 알려진 PARAM에 액세스하려면 request.args.get('param')를 사용할 수 있습니다

다음은 예입니다. 내가 아는 한이 일은 "옳은"방법입니다.

ETA : 더 자세히 살펴보기 전에 왜 쿼리 문자열을 사용해야하는지 스스로 물어야합니다. 필자는 원시 문자열을 가져올 필요가 없었습니다. Flask에는 추상화 된 방식으로 액세스하기위한 메커니즘이 있습니다. 그렇게하지 않을 수 밖에없는 강력한 이유가없는 한 그걸 사용해야합니다.

+2

을 사용하면'을 사용할 수 있습니다.대신'[4]' – jfs

+0

대신 'query'를 사용합니다. 실제로 다음에 사양을 읽어야합니다. –

+0

http://stackoverflow.com/a/11792690 – jfs

11

Werkzeug/Flask 이미 모든 것이 파싱되어 있습니다. 필요가 urlparse 다시 같은 일을 할 수 없습니다 :

from flask import request 

@app.route('/') 
@app.route('/data') 
def data(): 
    query_string = request.query_string ## There is it 
    return render_template("data.html") 

요청 및 응답 개체에 대한 전체 문서는 WERKZEUG에 있습니다 http://werkzeug.pocoo.org/docs/wrappers/

10

우리는 request.query_string를 사용하여이 작업을 수행 할 수 있습니다.

예 : - http://flask.pocoo.org/docs/0.10/blueprints/

이 이름은 쿼리의 일환으로 전달되는 고려할 수 있습니다

는 view.py

from my_script import get_url_params 

@app.route('/web_url/', methods=('get', 'post')) 
def get_url_params_index(): 
    return Response(get_url_params()) 

당신은 또한 플라스크 청사진을 사용하여 더 많은 모듈을 고려할 수 있습니다 문자열 /웹 URL /? FIRST_NAME = 존

## here is my_script.py 

## import required flask packages 
from flask import request 
def get_url_params(): 
    ## you might further need to format the URL params through escape.  
    firstName = request.args.get('first_name') 
    return firstName 

알다시피 작은 예제 일뿐입니다. 여러 값을 가져 와서 + formate하고이를 사용하거나 템플릿 파일로 전달할 수 있습니다.

관련 문제