Crea una cuenta o inicia sesión

¡Continúa aprendiendo sin ningún costo! Únete y comienza a potenciar tu carrera

Curso de Flask

Curso de Flask

Bernardo Cassina

Bernardo Cassina

Request y Response

7/36
Recursos

¿Cómo se obtiene la IP del usuario con Flask?

Para entender cómo Flask maneja las solicitudes (requests) y respuestas (responses), primero necesitamos captar cómo le asigna datos al objeto request. Este objeto es crucial porque contiene información sobre la solicitud, como la dirección IP del usuario. En un entorno de desarrollo local, esta IP será consistentemente "127.0.0.1", que es el host local. De este modo, aprendemos cómo obtener la dirección IP del usuario desde el objeto request proporcionado por Flask.

¿Cómo acceder al objeto request en Flask?

Flask ofrece varios contextos y variables para extraer información sobre la solicitud. El objeto request es el más utilizado para este fin. Dentro de este objeto, podemos encontrar la propiedad remote_addr, que contiene la dirección IP del usuario.

Para usar remote_addr, primero debemos importar request de Flask:

from flask import Flask, request

A partir de ahí, podemos utilizar request.remote_addr para obtener la dirección IP y almacenarla en una variable:

@app.route('/')
def index():
    user_ip = request.remote_addr
    return f'Tu dirección IP es: {user_ip}'

¿Cómo se formatea y muestra la dirección IP al usuario?

Después de obtener la IP, podemos usarla para personalizar la respuesta que el servidor devuelve al navegador del usuario. Podemos formatear un string que incluya la IP del usuario:

@app.route('/')
def index():
    user_ip = request.remote_addr
    return f'Tu dirección IP es: {user_ip}'

La IP del usuario se formatea en un mensaje sencillo que se devuelve al navegador, permitiendo que el usuario sepa qué dirección IP está siendo reconocida por la aplicación.

¿Qué sigue después de obtener la IP del usuario?

¿Cómo guardar la IP en una cookie?

En las próximas etapas del desarrollo, aprenderemos cómo crear un objeto response en Flask y cómo almacenar la dirección IP en una cookie, en lugar de obtenerla directamente de request. Esto es útil, ya que las cookies permiten persistir datos del usuario durante sesiones para mejorar la experiencia en el sitio web.

from flask import make_response

@app.route('/')
def index():
    user_ip = request.remote_addr
    response = make_response(f'Tu IP es: {user_ip}')
    response.set_cookie('user_ip', user_ip)
    return response

Guardando la IP del usuario en una cookie, es posible mantener un registro persistente de la dirección IP durante su sesión o incluso, para futuras visitas, hasta que la cookie expire o el usuario la elimine.

¡No te desanimes! Este es solo un pequeño vistazo al seguimiento en tiempo real de datos de usuarios en aplicaciones web, algo fundamental en el desarrollo web moderno. Cada paso en dominio de Flask y sus componentes te acercará a crear aplicaciones más robustas y personalizadas.

Aportes 27

Preguntas 4

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

Python 3.6 añadió una nueva forma de string format (aquí pueden ver más).
Se llaman formatted string literals o f-strings y facilitan mucho el formato de strings con expresiones incluidas.
El return en forma de f-string se vería así:

return f'Hello World Platzi, tu IP es{user_ip}'

Dentro de los { } pueden varias expresiones mientras las variables usadas estén dentro del scope de la función

No se si flask es más facil que django por mucho o este profesor explica mejor.

Para los que trabajan en Windows, a los fines de no estar configurando los SET uno a uno cada vez, vayan a la carpeta y archivo SCRIPTS/activate.bat y agregenle al final del archivo los comandos anteriores. Con eso debe bastar para ejecutar el servidor con todo. En mi caso ya lo deje con main.py para si alguno quiere cambiarlo a futuro.

set FLASK_APP=main.py set FLASK_DEBUG=1 flask run

  • Flask provee varios tipos de variables que no brindan el contexto de nuestra aplicación una de ellas es request.
  • Para ello primero debemos de import request de Flask.
from flask import Flask, request

Creo que la descripción del vídeo no concuerda con lo que explica el profesor 🤔

Tambien se puede enviar la variable de esta manera


@app.route('/')
def index():
    user_ip = request.remote_addr
    return f"Hola Mundo flask hellos, la IP es: {user_ip}"```

Resumen de esta clase

Para esta clase se explico como funciona el objeto request para obtener la dirección ip del servidor en Flask. Para utilizar el objeto request se hace lo siguiente:

  1. importar el objeto request.

    from flask import Flask, request

  2. Crear una nueva variable llamada user_ip con el valor request.remote_addr

    user_ip = request.remote_addr

  3. Concatenar la variable user_ip formateada para convertirse en un string y mostrar su valor.

    return 'Hello World Platzi, tu IP es {}'.format(user_ip)

Nunca está de más visitar la Documentación oficial

Excelente y super facil sacar la IP

Como aporte, por convención en flask a las funciones que están asociadas a un URL mediante el decorador route se les llama vistas.

Por favor actualizar este curso

Request & response

Importamos request y lo usamos para, por ejemplo, mostrar la IP del usuario:

from flask import Flask, request

app = Flask(__name__)

@app.route('/')
def hello():
    user_ip = request.remote_addr
    return f'Tu dirección IP es {user_ip}'

Para que funcione el “request”, primero hay que importarlo en la primera linea:

from flask import Flask, request ```

Muy bueno como funciona esto del request no sabia que existía.

Muy bien, funciona perfecto.

Averigué como hacerlo, no obstante parece que no es como en el video explicativo

from flask import Flask, request, jsonify

app = Flask(__name__)

@app.route("/get_my_ip", methods=["GET"])
def get_my_ip():
    return jsonify({'ip': request.remote_addr}), 200```
a mi me parce mas sencillo asi '''Hello, World tu IP es {user\_ip}!'''
from flask import Flask, request app = Flask(\_\_name\_\_) @app.route('/')def hello(): user\_ip = request.remote\_addr return "Hola, tu IP es: " + format(user\_ip)

También me funcionó así:

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

@app.route('/')
def hello():
    user_ip = request.remote_addr
    return 'Hello World Platzi, tu IP es ' + user_ip

Genial!

Los datos de la solicitud HTTP reenviados por el servidor WSGI serán encapsulados por el marco Flask como una instancia de la clase Request. El objeto de instancia de Solicitud contiene toda la información sobre una solicitud HTTP. Los atributos comunes incluyen:

form- Registre los datos del formulario en la solicitud. Tipo: MultiDict

args-Registra los parámetros de consulta en la solicitud. Tipo: MultiDict

cookies-Registra la cookie en la solicitud. Tipo: Dict

headers-Grabar el encabezado de la solicitud. Tipo: EnvironHeaders

method-HTTP método utilizado para registrar solicitudes: GET / POST / PUT ... Tipo: cadena

environ- Registre las variables de entorno reenviadas por el servidor WSGI. Tipo: Dict

url-Registra la URL solicitada. Tipo: cadena

Para obtener más información sobre la clase Solicitud, puede consultarSitio web oficial de Flask

2.1 objeto de solicitud

En la función de vista, puede usar directamente la solicitud de objeto global para acceder al objeto de Respuesta correspondiente a la solicitud actual. El siguiente ejemplo imprime toda la información del encabezado de la solicitud actual:


    @app.route('/')
    def index(): 
     print request.headers
     return 'see console output'

En caso tengan el error de request indefinido probablemente se deba a que les falte está linea de código que instala el paquete de request:
from flask import request

vamos muy bien en este curso

TIP Dependiendo de tu ordenador siempre fijate si el cambio se realizo o lo tomo el CMD que estes utilizando antes de cargar la pagina

ok, excelente

esto es hermoso, sigamos