2011-02-25 20 views
25

Este es mi código:Cómo establecer u obtener un valor de cookie en Django

from django.shortcuts import render_to_response, get_object_or_404 
from django.template import RequestContext 
from django import http 
from django.http import HttpResponse 

def main(request, template_name='index.html'): 
    HttpResponse.set_cookie('logged_in_status', 'zjm1126') 
    context ={ 
       'a':a, 
       'cookie':HttpResponse.get_cookie('logged_in_status'), 
    } 

    return render_to_response(template_name, context) 
    #return http.HttpResponsePermanentRedirect(template_name) 

Plantea esta excepción:

unbound method set_cookie() must be called with HttpResponse instance as first argument (got str instance instead) 

¿Qué puedo hacer yo?

Respuesta

86

No puede simplemente comenzar a llamar a los métodos en la clase HttpResponse, tiene que instanciarlo, p. response = HttpResponse("Hello World"), llame al método de cookie y luego devuélvalo de su vista.

response = render_to_response(template_name, context) 

response.set_cookie('logged_in_status', 'never_use_this_ever') 
return response 
# remember my other answer: 
# it's a terrrible idea to set logged in status on a cookie. 

Para obtener la cookie:

request.COOKIES.get('logged_in_status') 
# remember, this is a terrible idea. 
+7

+1 porque me hizo lol :) Y porque él es. – Scotty

+2

Está bien establecer el estado de inicio de sesión (lo hago todo el tiempo) simplemente no lo use en el código del lado del servidor. – Blaze

+1

¿dónde está su otra respuesta y por qué no está bien? – avi

Cuestiones relacionadas