python flask flash-message

send email flask python



Parámetros múltiples en la aprobación del matraz (7)

Cómo escribir la aprobación del matraz si tengo varios parámetros en la llamada a la URL. Aquí está mi URL que estoy llamando desde AJax

http://0.0.0.0:8888/createcm?summary=VVV&change=Feauure

Yo estaba tratando de escribir mi frasco como este.

@app.route(''/test/<summary,change> ,methods=[''GET'']

Pero esto no está funcionando. ¿Alguien me puede sugerir cómo mencionar la aprobación?


En su url de solicitud: http://0.0.0.0:8888/createcm?summary=VVV&change=Feauure , el punto final es /createcm y ?summary=VVV&change=Feauure /createcm ?summary=VVV&change=Feauure es parte de la solicitud. así que puedes probar esto:

from flask import Flask, request, jsonify app = Flask(__name__) @app.route(''/createcm'', methods=[''get'']) def create_cm(): summary = request.args.get(''summary'', None) # use default value repalce ''None'' change = request.args.get(''change'', None) # do something, eg. return json response return jsonify({''summary'': summary, ''change'': change}) if __name__ == ''__main__'': app.run(debug=True)

ejemplos httpie :

http get :5000/createcm summary==vvv change==bbb -v GET /createcm?summary=vvv&change=bbb HTTP/1.1 Accept: */* Accept-Encoding: gzip, deflate Connection: keep-alive Host: localhost:5000 User-Agent: HTTPie/0.9.8 HTTP/1.0 200 OK Content-Length: 43 Content-Type: application/json Date: Wed, 28 Dec 2016 01:11:23 GMT Server: Werkzeug/0.11.13 Python/3.6.0 { "change": "bbb", "summary": "vvv" }


Estás mezclando los parámetros de la URL y la propia URL.

Puede obtener acceso a los parámetros de URL con request.args.get("summary") y request.args.get("change") .


Las otras respuestas tienen la solución correcta si realmente desea utilizar parámetros de consulta. Algo como:

@app.route(''/createcm'') def createcm(): summary = request.args.get(''summary'', None) change = request.args.get(''change'', None)

Algunas notas. Si solo necesita admitir solicitudes GET, no es necesario que incluya los métodos en su decorador de ruta.

Para explicar los parametros de consulta. Todo más allá del "?" en su ejemplo se llama un parámetro de consulta. Flask sacará esos parámetros de consulta de la URL y los colocará en un ImmutableDict. Puede acceder a él mediante request.args , ya sea con la clave, es decir, request.args[''summary''] o con el método de obtención I y algunos otros comentaristas han mencionado. Esto le brinda la capacidad adicional de darle un valor predeterminado (como Ninguno), en caso de que no esté presente. Esto es común para los parámetros de consulta, ya que a menudo son opcionales.

Ahora hay otra opción que aparentemente intentabas hacer en tu ejemplo y es usar un parámetro de ruta. Esto se vería como:

@app.route(''/createcm/<summary>/<change>'') def createcm(summary=None, change=None): ...

La url aquí sería: http://0.0.0.0:8888/createcm/VVV/Feauure

Con VVV y Feauure pasándose a su función como variables.

Espero que ayude.


Las rutas no coinciden con una cadena de consulta, que se pasa directamente a su método.

from flask import request @app.route(''/createcm'', methods=[''GET'']) def foo(): print request.args.get(''summary'') print request.args.get(''change'')


Puedes probar esto:

--- solicitud de curvatura ---

curl -i "localhost:5000/api/foo?a=hello&b=world"

--- servidor del matraz ---

from flask import Flask, request app = Flask(__name__) @app.route(''/api/foo/'', methods=[''GET'']) def foo(): bar = request.args.to_dict() print bar return ''success'', 200 if __name__ == ''__main__'': app.run(debug=True)

--- salida de consola ---

{''a'': u''hello'', ''b'': u''world''}

PS No omita la comilla doble ("") con la opción de rizo, o no funciona en Linux porque "y"


Simplemente podemos hacer esto en dos stpes: 1] Código en matraz [app.py]

from flask import Flask,request app = Flask(__name__) @app.route(''/'') def index(): return "hello" @app.route(''/admin'',methods=[''POST'',''GET'']) def checkDate(): return ''From Date is''+request.args.get(''from_date'')+ '' To Date is ''+ request.args.get(''to_date'') if __name__=="__main__": app.run(port=5000,debug=True)

2] Hit url en el navegador:

http://127.0.0.1:5000/admin?from_date=%222018-01-01%22&to_date=%222018-12-01%22


@app.route(''/createcm'', methods=[''GET'']) def foo(): print request.args.get(''summary'') print request.args.get(''change'')