update - Django Cookies, ¿cómo puedo configurarlos?
django update session (3)
Tengo un sitio web que muestra diferentes contenidos según la ubicación que el visitante elija. Ejemplo: el usuario ingresa en 55812 como zip. Sé qué ciudad y área lat / long. eso es y darles su contenido pertinente a esa área. Mi pregunta es ¿cómo puedo almacenar esto en una cookie para que cuando regresen no estén obligados a ingresar siempre su código postal?
Lo veo de la siguiente manera:
- Establezca cookies persistentes según su área.
- Cuando vuelvan a leer la cookie, agarra el código postal.
- Devuelve contenido basado en el código postal de su cookie.
Parece que no puedo encontrar ninguna información sólida sobre cómo configurar una cookie. Cualquier ayuda es muy apreciada.
Este es un ayudante para establecer 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)
Use el siguiente código antes de enviar una respuesta.
def view(request):
response = HttpResponse("hello")
set_cookie(response, ''name'', ''jujule'')
return response
ACTUALIZACIÓN : compruebe la respuesta de @Peter a continuación para obtener una solución integrada: https://.com/a/5575578/174027
Puede configurar manualmente la cookie, pero dependiendo de su caso de uso (y si desea 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, almacenarlo todo 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 una sobrecarga en el extremo de Django de almacenar los datos de la sesión para tener en cuenta).
Usar el marco de sesión de Django debería abarcar la mayoría de los escenarios, pero ahora Django también proporciona métodos directos de manipulación de cookies en los objetos de solicitud y respuesta (para que no necesites una función de ayuda).
Configurando una cookie:
def view(request):
response = HttpResponse(''blah'')
response.set_cookie(''cookie_name'', ''cookie_value'')
Recuperando una cookie:
def view(request):
if ''cookie_name'' in request.COOKIES:
value = request.COOKIES[''cookie_name'']