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).