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