miércoles, 16 de enero de 2019

¿Qué son las Cookies? - Cookies con Flask

Hola amigos de Internet. Mi nombre es Luis, y les doy la bienvenida a Mi Diario Python.
En el articulo de hoy veremos un tema imprescindible para el desarrollo web. Las Cokies. Responderemos la pregunta ¿Qué son Cookies?. Y veremos como utilizarlas en nuestras aplicaciones web con Flask.

¿Qué es una “galleta”?

Las cookies (en español, “galletas”) son un fragmento de información almacenado por un navegador web. Más específicamente, en el disco duro de la persona que visita la pagina. Esta información almacenada, puede ser recuperada nuevamente por el servidor web en posteriores visitas a la misma página.
Las principales funciones de las cookies son:
Recordar acceso, conocer si un usuario ya ha visitado la pagina anteriormente y actuar en consecuencia. Como por ejemplo, ocultar cierto contenido.
Conocer información sobre los hábitos de navegación, e intentos de spyware (programas espía), por parte de agencias de publicidad y otros. Esto puede causar problemas de privacidad y es una de las razones por la que las cookies tienen sus detractores.
Veamos un como podemos almacenar cookies con Flask. Es muy sencillo. Solo debemos utilizar el método set_cookie. Veamos un ejemplo:
from flask import Flask, make_response

# Creamos la app Flask
app = Flask(__name__)

@app.route('/')
def index():
 # Creamos la respuesta
    resp = make_response("")
    # Almacenamos la cookie
    resp.set_cookie('username', 'username_1')
    # retornamos la respuesta
    return resp

if __name__ == '__main__':
 # iniciamos la aplicación
 app.run(debug=True)
Antes de correr el script, hablemos del método make_response(). Te preguntaras, por que estoy usando ese método para crear la respuesta. La cosa es que las cookies se establecen en los objetos de respuesta. Como normalmente solo devuelve cadenas desde las funciones de vista, Flask las convertirá en objetos de respuesta. Para poder hacerlo explícitamente, utilizamos el método make_response(). En mi caso, he enviado un cuerpo vacío. Pero puedes enviar lo que quieres. incluyendo una plantilla (make_response(render_template(…))).
Ahora veamos el resultado. Nos dirigimos a http://localhosts:5000. Para poder ver la cookie almacenada. Tendremos que ir a **inspeccionador de elementos ** y dirigirnos a la pestaña Application. Y entramos en cookies:
Muy bien. Como podemos ver, la cookie se almaceno exitosamente. Ahora que sabemos almacenar cookies, es hora de aprender a leer esa información.
from flask import Flask, request

# Creamos la app Flask
app = Flask(__name__)

@app.route('/')
def index():
 # Obtenemos la cookie
    user = request.cookies.get('username')
    # retornamos la respuesta
    return "<h1>Bienvenido " + user + "</h1>"

if __name__ == '__main__':
 # iniciamos la aplicación
 app.run(debug=True)
Como pueden observar, para leer las cookies necesitas importar a request, luego utilizamos cookies.get dándole como argumento el nombre de la cookie. El valor de la cookie la he guardado en una variable user. Veamos el resultado:
Excelente, como podemos ver la información a permanecido.
Ahora realizaremos un pequeño ejemplo. Pero antes, te sugiero borrar las cookies que hemos creado. Puedes hacer dando click sobre "Clear All".

Ejemplo del mundo real

Ahora que les parece si hacemos un ejemplo. Haremos una aplicación capaz de saber si un usuario ya ha visitado la pagina y mostrar dos mensajes diferentes: uno si el usuario es nuevo y otro si el usuario ya ha visitado la pagina anteriormente. Veamos como hacerlo:
from flask import Flask, request, make_response
from random import randint

# Creamos la app Flask
app = Flask(__name__)

@app.route('/')
def index():
 # Leemos la cookie "usuario"
 name_user = request.cookies.get('usuario')

 # Comprobamos si las cookies existen. De no ser así:
 if user_visit == None and name_user == None:
  # Creamos la respuesta
  res = make_response("<h1>Bienvenido a Mi Diario Python</h1>")
  # Guardamos la cookie "usuario"
  res.set_cookie('usuario', "usuario" + str(randint(1000, 10000)))
  # Retornamos la respuesta
  return res

 # Si las cookies sí existen. Se muestra un mensaje con el nombre del usuario
 return "<h1>Bienvenido de vuelta " + name_user + "</h1>"


if __name__ == '__main__':
 # iniciamos la aplicación
 app.run(debug=True)
El programa es muy simple. Lo primero que hacemos es solicitar la cookie “usuario” que nos dirá si el usuario ya ha visitado la pagina. Luego comprobamos de que esta cookie existe. Si la cookie tienen valor “None”, significa que el usuario no ha visitado la pagina anteriormente y que la cookie que solicitamos no existe. Por lo que si no existe, creamos la respuesta con make_response y definimos la nueva cookie en donde guardaremos el nombre del nuevo usuario. Luego retornamos “Bienvenido a Mi Diario Python”.
De lo contrario, si la cookie sí existe, retornamos Bienvenido de vuelta “nombre del usuario”.
Iniciamos la aplicación y veamos el resultado:
Ese seria el resultado al entrar por primera vez. Como podemos ver la cookie se ha guardado para su uso posterior.
Refresquemos la pagina y veamos que sucede:
Perfecto, como pueden ver, la pagina nos esta dando la bienvenida de vuelta con nuestro nombre de usuario.

Por ultimo

Estos son todos los parámetros aceptados por el método set_cookies. Te recomiendo echarle un vistazo. De esta manera podrás configurar tus cookies a tu gusto.
set_cookie`( _key_ , _value = ''_ , _max_age = None_ , _expires = None_ , _path = '/'_ , _domain = None_ , _secure = False_ , _httponly = False_ , _samesite = None_ )
Perfecto. Espero que el articulo te fuera de mucha ayuda.
¿Alguna duda? ¿Alguna sugerencia? Puedes dejar tu comentario y con gusto te responderemos.
Sin más nada que decir. Mi nombre es Luis, y fue un placer compartir mis conocimientos con todos ustedes :D.

No hay comentarios :
Write comentarios

Tu comentario es importante y nos motiva a seguir escribiendo...

Powered by Blogger .