Parámetros GET y POST con Flask
Introducción:
¿GET y POST? ¿Qué es eso?
https://www.pythondiario.com/articulos.html?tag=Flask
Podemos ver claramente que la información se ha enviado utilizando GET, ya que la información es visible para el usuario.
Por lo contrario en la siguiente url no se muestra la información , por lo que es claro que se a utilizado POST:
https://www.pythondiario.com/articulos.html
Teniendo todo esto claro, podemos seguir.
Parámetro GET con Flask:
<label for="nombreUser">Nombre de Usuario</label>
<input type="text" name="nombreUser"><br/>
<label for="contraseña">Contraseña</label>
<input type="password" name="contraseña"><br/>
<input type="submit" value="Iniciar Sesión" />
</form>
from flask import Flask, render_template, request # Instancia de Flask. Aplicación
app = Flask(__name__) # Creamos nuestro primer route. '/login'
@app.route('/login')
def template():
# Renderizamos la plantilla. Formulario HTML.
# templates/form.html
return render_template("form.html") # Definimos el route con el método GET
@app.route('/usuario',methods=['GET'])
def usuario():
# Obtenemos la información del parametro "nombreUser"
# Esto lo hacemos con "request.args.get"
nombreUser = request.args.get('nombreUser')
# Retornamos la respuesta
return "<h1>Bienvenido " + nombreUser + "</h1>" if __name__ == '__main__':
# Iniciamos la apicación en modo debug
app.run(debug=True)
Parámetro POST con Flask:
<label for="nombreUser">Nombre de Usuario</label>
<input type="text" name="nombreUser"><br/>
<label for="contraseña">Contraseña</label>
<input type="password" name="contraseña"><br/>
<input type="submit" value="Iniciar Sesión" />
</form>
from flask import Flask, render_template, request # Instancia de Flask. Aplicación
app = Flask(__name__) # Creamos nuestro primer route. '/login'
@app.route('/login')
def template():
# Renderizamos la plantilla. Formulario HTML.
# templates/form.html
return render_template("form.html") # Definimos el route con el método POST
@app.route('/usuario',methods=['POST'])
def usuario():
# Obtenemos la información del parametro "nombreUser"
# Esto lo hacemos con el diccionario "form"
nombreUser = request.form['nombreUser']
# Retornamos la respuesta
return "<h1>Bienvenido " + nombreUser + "</h1>" if __name__ == '__main__':
# Iniciamos la apicación en modo debug
app.run(debug=True)
-
-
Muchas gracias Paulo, por visitar el blog y compartir tu comentario. :D.
-
-
Hola Luis:
Estoy intentando hacer el ejemplo que estas planteando en este artículo, pero no me esta funcionando.
He comprobado que instalé y funciona correctamente el Flask, lo comprobé con este ejemplo:
"
from flask import Flask
app = Flask(__name__)@app.route('/')
def hello_world():
return 'Hola amigos¡'if __name__ == '__main__':
app.run()
"Ahora bien, no tengo claro del por qué no me funciona tu ejemplo, la aplicación en .py no encuentra el archivo 'form.html' que he creado, comprobé abriendo directamente dicho form.html y lo hace a la perfección.
Mi problema específico es que no sé dónde deben residir estos archivos, haber sí me explico:
.../prueba/aplicacion.py
.../prueba/form.htmló
.../prueba/aplicacion.py
.../prueba/login/form.htmlPorque no se me ocurre otra explicación del porqué no parece encontrar el form.html
Gracias de antemano por cualquier aclaración que puedas dar.
-
Actualizo la información del problema que tengo...
analizando el problema me encontré que el error es la imposibilidad de interpretar al menos un byte de algún archivo (no sé cual), el error me aparece así:
...
File "C:UsersUSERAppDataLocalProgramsPythonPython37-32libsite-packagesflasktemplating.py", line 83, in _get_source_fast return loader.get_source(environment, template)
File "C:UsersUSERAppDataLocalProgramsPythonPython37-32libsite-packagesjinja2loaders.py", line 175, in get_source contents = f.read().decode(self.encoding)
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xf1 in position 169: invalid continuation byteSólo puse lo final porque es bastante largo la ruta del error, he probado cambiando los archivos .py y .html reescribiendolos de nuevo, reduciendo el tamaño y aumentandolo también, siempre me indica la misma posición de byte (169), he probado en dos computadores diferentes, con dos versiones diferentes de python (3.4 y 3.7), y el error persiste, en internet no hallo la solución.
¿Alguna idea?
Gracias.
-
Ya resolví el problema, como editor estoy usando Sublimetext 3, cuando hice el archivo html lo salvé con la configuración predeterminada del editor (Windows 1252), cuando especifiqué que usara UTF-8, al salvarlo y probar... ¡FUNCIONÓ A LA PERFECCIÓN! =-D
-
Hola Luis, enhorabuena por tu blog, me está siendo de mucha utilidad para aprender a manejar Flask. Tengo una pregunta, que supongo que la respuesta es que si, pero no lo tengo muy claro. Se podría acceder al servidor creado con Flask desde fuera de nuestra red local?
-
Que buen contenido hermano
Deja una respuesta
Excelente las personas como vos que comparten su conocimiento