0Pricing
Python Academy · Lección

Formularios y datos de solicitudes

Procese la entrada del usuario

Formularios y datos de solicitudes es una lección gratuita de Python Academy en CoddyKit. Esta es la lección 3 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Python Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Python Academy incluye 4 lecciones en total.

El objeto request

Flask proporciona a cada vista acceso a un objeto global request que contiene todos los datos entrantes: campos de formulario, cadenas de consulta, JSON, encabezados y mucho más.

from flask import Flask, request
app = Flask(__name__)
# request is available inside any view
print('request carries the incoming data')

Parámetros de la cadena de consulta

Los datos que aparecen después de ? en la URL se encuentran en request.args. Use .get() para leer un valor de forma segura.

from flask import Flask, request
app = Flask(__name__)

@app.route('/search')
def search():
    term = request.args.get('q', '')
    return 'Searching for ' + term
print('/search?q=cats -> request.args')

Un formulario HTML

Un formulario envía datos al enviarse. Los atributos method y action determinan cómo y adónde se envían.

# <form method='POST' action='/login'>
#   <input name='username'>
#   <input name='password' type='password'>
#   <button>Submit</button>
# </form>
print('Form posts username and password')

Leer datos del formulario

Los campos enviados del formulario llegan a request.form. Acceda a ellos mediante el atributo name del campo de entrada.

from flask import Flask, request
app = Flask(__name__)

@app.route('/login', methods=['POST'])
def login():
    user = request.form['username']
    return 'Welcome ' + user
print('request.form holds posted fields')

Acceso seguro con get

Usar request.form['x'] genera una excepción si falta la clave. Es preferible usar request.form.get('x'), que devuelve None en su lugar.

from flask import Flask, request
app = Flask(__name__)

@app.route('/login', methods=['POST'])
def login():
    user = request.form.get('username')
    if not user:
        return 'Missing username', 400
    return 'Welcome ' + user
print('.get avoids KeyError')

GET y POST en una vista

Un patrón habitual consiste en mostrar el formulario con GET y procesar los datos con POST, todo en una misma vista.

from flask import Flask, request, render_template
app = Flask(__name__)

@app.route('/contact', methods=['GET', 'POST'])
def contact():
    if request.method == 'POST':
        return 'Thanks, ' + request.form.get('name', 'friend')
    return render_template('contact.html')
print('One view, two methods')

Validar la entrada

No confíe nunca en los datos introducidos por el usuario. Compruebe que los campos obligatorios existan y tengan valores razonables antes de usarlos.

from flask import Flask, request
app = Flask(__name__)

@app.route('/age', methods=['POST'])
def age():
    raw = request.form.get('age', '')
    if not raw.isdigit():
        return 'Age must be a number', 400
    return 'Age is ' + raw
print('Validate before trusting input')

Leer JSON

Los clientes de API suelen enviar JSON. request.get_json() analiza el cuerpo y lo convierte en un diccionario de Python.

from flask import Flask, request
app = Flask(__name__)

@app.route('/api', methods=['POST'])
def api():
    data = request.get_json()
    return 'Got name ' + data.get('name', '?')
print('get_json parses the JSON body')

Cargar archivos

Los archivos cargados se encuentran en request.files. Guarde uno con su método .save() después de validarlo.

from flask import Flask, request
app = Flask(__name__)

@app.route('/upload', methods=['POST'])
def upload():
    f = request.files.get('photo')
    if f:
        return 'Received ' + f.filename
    return 'No file', 400
print('request.files holds uploads')

Redirigir después de POST

Después de procesar un formulario, redirija al usuario para evitar envíos duplicados al actualizar la página. Use redirect(url_for(...)).

from flask import Flask, redirect, url_for
app = Flask(__name__)

@app.route('/done')
def done():
    return 'All done'

@app.route('/save', methods=['POST'])
def save():
    return redirect(url_for('done'))
print('Post/Redirect/Get pattern')

Mensajes flash

flash() almacena un mensaje de un solo uso que se muestra después de una redirección; es ideal para confirmaciones como «Guardado correctamente».

from flask import Flask, flash, redirect, url_for
app = Flask(__name__)
app.secret_key = 'change-me'

@app.route('/save', methods=['POST'])
def save():
    flash('Saved successfully')
    return redirect(url_for('save'))
print('flash shows a one-time message')

Comprobación rápida

Ponga a prueba sus conocimientos sobre el procesamiento de formularios.

Recapitulación

Procesó datos introducidos por el usuario en Flask.

  • request.args para cadenas de consulta, request.form para campos de formulario
  • request.get_json() para cuerpos JSON, request.files para cargas de archivos
  • Valide siempre la entrada y use .get() para acceder a los datos de forma segura
  • Use el patrón Post/Redirect/Get y flash() para lograr una experiencia de usuario más limpia

Preguntas frecuentes

¿La lección «Formularios y datos de solicitudes» es gratis?

Sí — el texto completo de «Formularios y datos de solicitudes» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Python Academy, actualiza a CoddyKit PRO. El curso de Python Academy incluye 4 lecciones en total.

¿Qué aprenderé en «Formularios y datos de solicitudes»?

Procese la entrada del usuario Practicas Python Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar Python Academy?

No se requiere experiencia previa. Python Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 3 de 4.

¿Cuánto tiempo toma la lección «Formularios y datos de solicitudes»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de Python Academy?

Sí. Cada lección de Python Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. Rutas y vistas
  2. Plantillas con Jinja2
  3. Formularios y datos de solicitudes
  4. Construcción de un endpoint REST
← Volver a Python Academy