No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Curso de Flask

Curso de Flask

Bernardo Cassina

Bernardo Cassina

Ciclos de Request y Response

8/36
Recursos

Request-Response: es uno de los métodos básicos que usan las computadoras para comunicarse entre sí, en el que la primera computadora envía una solicitud de algunos datos y la segunda responde a la solicitud.

Por lo general, hay una serie de intercambios de este tipo hasta que se envía el mensaje completo.

Por ejemplo: navegar por una página web es un ejemplo de comunicación de request-response.

Request-response se puede ver como una llamada telefónica, en la que se llama a alguien y responde a la llamada; es decir hacemos una petición y recibimos una respuesta.

Aportes 29

Preguntas 12

Ordenar por:

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

o inicia sesión.

Para los que no saben que son las cookies, aqui un video que explica muy bien, que son y para que sirven 😉
https://www.youtube.com/watch?v=QFrUTDfYgnM

El codigo es vulnerable a XSS.
Una ves que la cookie user_ip es guardada en el browser, el usuario es capaz de modificarla y ejecutar lo que guste.

Para evitar esto, recomendaria importar escape de flask, y hacer lo siguiente:

@app.route("/hello")
def ip():
	user_ip = request.cookies.get('user_ip')
	user_ip = escape(user_ip)
	return "Tu ip es {}".format(user_ip)

Si no saben que es XSS, les dejo algunos recursos:

En español:
https://www.youtube.com/watch?v=inCS6PQYu34

En ingles:
https://www.youtube.com/watch?v=EoaDgUgS6QA

En mi caso a mí me aparece como None la IP

Si quieren probar su proyecto en diferentes dispositivos conectados a su misma red pueden correr la aplicación con el comando

flask run --host=0.0.0.0

después solo escriben la dirección IP de la máquina en la que está corriendo la aplicación más el puerto ej. 192.168.0.3:5000

Les adjunto mi versión de código, la cual se ejecuta directamente desde el main.py

from flask import Flask, request, make_response, redirect


app = Flask(__name__)

@app.route('/')
def index():

    user_ip = request.remote_addr
    make = redirect('/hello')
    response = make_response(make)
    response.set_cookie('user_ip', user_ip)

    return response

@app.route('/hello')
def hello():    

    mensaje = 'Hola Mundo!!'
    user_ip = request.cookies.get('user_ip')

    return mensaje + user_ip

if __name__ == "__main__":
    
    app.run(debug=True)

También pueden crear rutas dinámicas, copien el siguiente código y en su navegador vayan a la ruta “127.0.0.1:5000/hello/<user>” y user sustitúyanlo por cualquier nombre.

Que ventajas tiene el utilizar redirect y cookies en la forma en la que se utilizó en esta clase?

Mis apuntes

En esta clase se hizo la creación de una nueva ruta donde se va guardar la ip en una cookie para luego ser redirigido a la nueva ruta donde se mostrara el mensaje que ya hicimos en las clases anteriores. Para ello se hizo lo siguiente;

  1. Crear una nueva ruta llamada hello @app.route('/hello')
  2. Importar los objetos make_response y redirect
  3. Crear la variable response = make.response(redirect(’/hello’))
  4. Asignarle una cookie con response.set_cookie(’user_ip’, user_ip)
  5. Retornar la variable response con return response
  6. En la ruta @app.route('/') asignar valor a la variable user_ip con user_ip = request.cookies.get('user_ip')
from flask import Flask, request, make_response, redirect

app = Flask(__name__)

@app.route('/')
def index():
    user_ip = request.remote_addr

    response = make_response(redirect('/hello'))
    response.set_cookie('user_ip', user_ip)

    return response

@app.route('/hello')
def hello():

    user_ip = request.cookies.get('user_ip')

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

Code

from flask import Flask, request, make_response, redirect

app = Flask(__name__)

@app.route('/')
def index():
    user_ip = request.remote_addr

    response = make_response(redirect('/hello'))
    response.set_cookie('user_ip', user_ip)

    return response

@app.route('/hello')
def hello():

    user_ip = request.cookies.get('user_ip')

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

Un blog que explica de manera clara el tema del manejo de cookies es este:

https://lineadecodigo.com/python/gestionar-cookies-flask

¿llevas horas ejecutando el código y por alguna razón a veces funciona y otras veces no? NO TE COMPLIQUES! Usa el navegador que por defecto utilizamos en el curso, por alguna razón existen problemas de compatibilidad entre el servidor local y los navegadores modernos no inicializan bien algunos parámetros.

No te rindas, compañero!

Este curso es uno de lo mejores y mejor explicados en los que he estado. Muy buen profesor, explica super claro y sin afanes.

acá encontramos los atributos y metodos de request aquí

Que son las cookies: Las cookies son usualmente son pequeños archivos de texto y se almacenan en el directorio del navegador de tu ordenador o en las subcarpetas de datos de programa.

Las cookies se crean cuando utilizas tu navegador para visitar un sitio web que las utiliza para hacer un seguimiento de tus movimientos por el sitio, ayudarte a indicarte dónde dejaste la navegación, recordar tu inició de sesión y selección de tema, preferencias y otras funciones de personalización.

A menudo las cookies son indispensables en las webs que tienen bases de datos muy grandes, requieren inicio de sesión, tienen temas personalizables y otras funciones avanzadas.


Mas informacion: Cookies

Que buen profe 😄

Otra forma de usar el redirect es con una url_for
, esta va a generar una url completa a la ruta asignada por el metodo

    response = make_response(redirect(url_for('hello')))

En este caso con el metodo hello

Ciclos de Request y Response

Podemos crear y obtener cookies desde el browser de la siguiente manera:

from flask import Flask, request, make_response, redirect

app = Flask(__name__)

@app.route('/')
def index():
    user_ip = request.remote_addr

    response = make_response(redirect('/hello'))
    response.set_cookie('user_ip', user_ip)

    return response

@app.route('/hello')
def hello():
    user_ip = request.cookies.get('user_ip')
    return f'Tu dirección IP, (después de haberla obtenida con una cookie 🍪) es {user_ip}'

¿Así de sencillo?

from urllib import response
from flask import Flask, request, make_response, redirect

app = Flask(__name__)

# Ciclo de Response
@app.route('/')
def index ():
    user_ip = request.remote_addr

    response = make_response(redirect('/hello'))
    response.set_cookie('user_ip', user_ip)

    return response

# Ciclo de Request
@app.route('/hello')
def hello ():
    user_ip = request.cookies.get('user_ip')
    return 'Hola Platzi, tu IP es {}'.format(user_ip)
# import main Flask class and request object
from flask import Flask, request

# create the Flask app
app = Flask(__name__)

@app.route('/query-example')
def query_example():
    return 'Query String Example'

@app.route('/form-example')
def form_example():
    return 'Form Data Example'

@app.route('/json-example')
def json_example():
    return 'JSON Object Example'

if __name__ == '__main__':
    # run app in debug mode on port 5000
    app.run(debug=True, port=5000)

Mi code

from flask import Flask, request, make_response, redirect


app = Flask(__name__)

@app.route('/')
def index():
    user_ip = request.remote_addr
    response = make_response(redirect('/hello'))
    response.set_cookie('user_ip', user_ip)
    return response

@app.route('/hello')
def hello():
    user_ip = request.cookies.get('user_ip')
    return 'Hello World Platzi, tu IP es {}'.format(user_ip)```

Me da el siguiente error:

NameError: global name 'make_response' is not defined

from flask import Flask, request, make_response, redirect
app = Flask(name)

@app.route(’/’)
def index():
user_ip = request.remote_addr
response = make_response(redirect(’/hello’))
response.set_cookie(‘user_ip’, user_ip)

return response

@app.route(’/hello’)
def hello_world():
#creamos nueva variable de la ip que detectamos en el browser
user_ip = request.cookies.get(‘user_ip’)

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

  • Request-Response: es uno de los métodos básicos que usan las computadoras para comunicarse entre sí.
  • redirect, redirecciona a otro lugar de la aplicación.
  • response, podemos establecer las cookies de sesión de usuario.
  • request, para conseguir los datos enviados por el navegados como las cookies

Bien, gracias.

que sencillo, muy chevere

chevere