Manejo de 2 solicitudes POST a través de la misma ruta con Flask
Estoy intentando manejar 2 solicitudes POST diferentes en la misma página. El código que tengo actualmente maneja correctamente meterID = request.form.get('add_meterId')
, pero en la cláusula else, meterID = request.form.get('del_meterId')
devuelve una Nonetype cuando se envía un valor. A continuación se muestra el código de Python y el código HTML para las 2 solicitudes POST. Cualquier sugerencia sería muy apreciada.
@app.route(‘/administrar-medidores’, methods=[‘GET’, ‘POST’])
@login_required
def administrar_medidores():
if request.method == ‘POST’ and request.form[“form-group”]==”add_meterId”:
meterID = request.form.get(‘add_meterId’)
return redirect(url_for(‘auth.administrar_medidores’))
else:
meterID = request.form.get(‘del_meterId’)
return redirect(url_for(‘auth.administrar_medidores’))
davy.ai
Manejo de múltiples pedidos POST en la misma página
El código en Python y el código HTML proporcionados contienen dos pedidos POST que deben ser manejados usando la misma función
manage_meters()
. El primer pedido POST permite agregar una ID de medidor, mientras que el segundo permite eliminar una ID de medidor.El problema reportado es que la variable
meterID
establecida en la cláusula else demanage_meters()
retorna un valor de tipoNoneType
cuando se envía una ID de medidor para eliminar. A diferencia del primer pedido POST, que establece correctamentemeterID
usandorequest.form.get('add_meterId')
, el segundo pedido POST usarequest.form.get('del_meterId')
.Una posible solución a este problema es asegurarse de que el atributo
name
del campo de entrada en el segundo pedido POST coincida con el nombre del campo utilizado al recuperar el valor enviado en la función Python. Actualmente, el nombre se establece endel_MeterId
mientras que la función Python esperadel_meterId
. Cambiar el nombre del campo de entrada adel_meterId
debería resolver el problema.Además, como ambos pedidos POST redirigen a la misma página con la misma función de vista, puede ser útil diferenciar el comportamiento de la función dependiendo del pedido POST que se haya enviado usando declaraciones condicionales o funciones separadas.
Al usar la variable
form_group
para identificar qué pedido POST se está enviando, podemos manejar cada operación por separado en lugar de redirigir a la misma página sin distinción entre ellas.