Saltar al contenido

Cookies de Django, ¿cómo puedo configurarlas?

Solución:

El uso del marco de sesión de Django debería cubrir la mayoría de los escenarios, pero Django ahora también proporciona métodos directos de manipulación de cookies en los objetos de solicitud y respuesta (por lo que no necesita una función auxiliar).

Configuración de una cookie:

def view(request):
  response = HttpResponse('blah')
  response.set_cookie('cookie_name', 'cookie_value')

Recuperando una cookie:

def view(request):
  value = request.COOKIES.get('cookie_name')
  if value is None:
    # Cookie is not set

  # OR

  try:
    value = request.COOKIES['cookie_name']
  except KeyError:
    # Cookie is not set

ACTUALIZAR : compruebe la respuesta de Peter a continuación para obtener una solución incorporada:

Este es un ayudante para configurar una cookie persistente:

import datetime

def set_cookie(response, key, value, days_expire=7):
    if days_expire is None:
        max_age = 365 * 24 * 60 * 60  # one year
    else:
        max_age = days_expire * 24 * 60 * 60
    expires = datetime.datetime.strftime(
        datetime.datetime.utcnow() + datetime.timedelta(seconds=max_age),
        "%a, %d-%b-%Y %H:%M:%S GMT",
    )
    response.set_cookie(
        key,
        value,
        max_age=max_age,
        expires=expires,
        domain=settings.SESSION_COOKIE_DOMAIN,
        secure=settings.SESSION_COOKIE_SECURE or None,
    )

Utilice el siguiente código antes de enviar una respuesta.

def view(request):
    response = HttpResponse("hello")
    set_cookie(response, 'name', 'jujule')
    return response

ACTUALIZAR : compruebe la respuesta de Peter a continuación para obtener una solución incorporada:

Puede configurar manualmente la cookie, pero dependiendo de su caso de uso (y si es posible que desee agregar más tipos de datos persistentes / de sesión en el futuro), podría tener más sentido usar la función de sesiones de Django. Esto le permitirá obtener y establecer variables vinculadas internamente a la cookie de sesión del usuario. Lo bueno de esto es que si desea almacenar una gran cantidad de datos vinculados a la sesión de un usuario, almacenarlos todos en cookies agregará mucho peso a las solicitudes y respuestas HTTP. Con las sesiones, la cookie de sesión es todo lo que se envía de un lado a otro (aunque hay que tener en cuenta la sobrecarga en el extremo de Django de almacenar los datos de la sesión).

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *