카테고리 보관물: Python

Python

Flask에서 쿼리 문자열을 어떻게 얻습니까? 찾을 수 없습니다!

쿼리 문자열을 얻는 방법에 대한 플라스크 문서에서 명확하지 않습니다. 나는 새로운, 문서를보고 찾을 수 없습니다!

그래서

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



답변

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')


답변

전체 URL은으로 사용 가능 request.url하고 쿼리 문자열은으로 사용 가능합니다 request.query_string.

예를 들면 다음과 같습니다.

from flask import request

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

    return request.query_string

쿼리 문자열에 전달 된 개별 알려진 매개 변수에 액세스하려면을 사용할 수 있습니다 request.args.get('param'). 이것은 내가 아는 한 “올바른”방법입니다.

ETA : 계속 진행하기 전에 왜 쿼리 문자열을 원하는지 스스로에게 물어봐야합니다. 나는 원시 문자열을 끌어 들일 필요가 없었습니다.-Flask에는 추상적 인 방식으로 액세스 할 수있는 메커니즘이 있습니다. 설득력없는 이유가없는 한 사용하십시오.


답변

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/


답변

request.query_string을 사용하여이를 수행 할 수 있습니다.

예:

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())

또한 Flask Blueprints- http: //flask.pocoo.org/docs/0.10/blueprints/를 사용하여 더 모듈화 할 수 있습니다.

쿼리 문자열 / web_url /? first_name = john의 일부로 이름이 전달되는 것을 고려할 수 있습니다.

## 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

보시다시피 이것은 작은 예일뿐입니다. 여러 값을 가져 와서 형식을 지정하여 사용하거나 템플릿 파일로 전달할 수 있습니다.


답변

쿼리 문자열에서 값을 얻는 방법이 아니라 쿼리 문자열을 찾으러 왔습니다.

request.query_string URL 매개 변수를 원시 바이트 문자열 (Ref 1)로 리턴합니다.

사용 예 request.query_string:

from flask import Flask, request

app = Flask(__name__)

@app.route('/data', methods=['GET'])
def get_query_string():
    return request.query_string

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

산출:

플라스크 경로의 쿼리 매개 변수

참고 문헌 :

  1. query_string에 대한 공식 API 문서

답변

쿼리 문자열에 대해 다음과 같이 시도하십시오.

from flask import Flask, request

app = Flask(__name__)

@app.route('/parameters', methods=['GET'])
def query_strings():

    args1 = request.args['args1']
    args2 = request.args['args2']
    args3 = request.args['args3']

    return '''<h1>The Query String are...{}:{}:{}</h1>''' .format(args1,args2,args3)


if __name__ == '__main__':

    app.run(debug=True)

산출:
여기에 이미지 설명을 입력하십시오


답변

O’Reilly Flask Web Devleopment에 설명 된대로 플라스크 요청 객체에서 검색 가능한 모든 형식의 쿼리 문자열 :

에서 오라일리 플라스크 웹 개발 이전 만안 Gouhari에 의해 진술하고, 먼저 가져 오기 요청해야합니다

from flask import request

requestFlask에 의해 명명 된 컨텍스트 변수 (추측 치)로 노출 된 객체 request입니다. 이름에서 알 수 있듯이 클라이언트가 HTTP 요청에 포함시킨 모든 정보를 포함합니다. 이 객체에는 각각 검색하고 호출 할 수있는 많은 속성과 메서드가 있습니다.

request선택할 쿼리 문자열을 포함하는 속성 이 꽤 있습니다. 여기에서는 쿼리 문자열을 포함하는 모든 속성과 해당 속성의 O’Reilly 책의 설명을 나열합니다.

먼저 args“URL의 쿼리 문자열에 모든 인수가 전달 된 사전”이 있습니다. 따라서 쿼리 문자열을 사전으로 구문 분석하려면 다음과 같이하십시오.

from flask import request

@app.route('/'):
    queryStringDict = request.args

(다른 사람들이 지적했듯이 .get('<arg_name>')사전에서 특정 값을 얻는 데 사용할 수도 있습니다 )

그런 다음 쿼리 문자열을 포함 form하지 않지만 잠시 나열 할 쿼리 문자열을 포함하는 다른 속성의 일부에 포함되는 속성 있습니다. 그러나 먼저 form“요청과 함께 제출 된 모든 양식 필드가있는 사전”입니다. 플라스크 요청 객체에서 사용할 수있는 또 다른 사전 속성이 있습니다 values. valuesform및 의 값을 결합하는 사전입니다 args.” 이를 검색하면 다음과 같이 보일 것입니다.

from flask import request

@app.route('/'):
    formFieldsAndQueryStringDict = request.values

(다시, .get('<arg_name>')사전에서 특정 항목을 가져 오기 위해 사용 하십시오)

또 다른 옵션은 query_string“원시 이진 값으로 URL의 쿼리 문자열 부분”입니다. 그 예 :

from flask import request

@app.route('/'):
    queryStringRaw = request.query_string

그런 다음 추가 보너스 full_path로 “URL의 경로 및 쿼리 문자열 부분”이 있습니다. ejemplo에게 :

from flask import request

@app.route('/'):
    pathWithQueryString = request.full_path

마지막으로 url“클라이언트가 요청한 전체 URL”(쿼리 문자열 포함) :

from flask import request

@app.route('/'):
    pathWithQueryString = request.url

행복한 해킹 🙂