2010-12-11 60 views
1

quand je change la vue page d'accueil:-ce que le `context_instance = RequestContext (demande)` utilisation des cookies dans django

def home(request): 
    return render_to_response('homepage.html') 

à

def home(request): 
    return render_to_response('homepage.html',context_instance=RequestContext(request)) 

le user qui se connectent mon site sera toujours se connecter même lorsque je ferme le navigateur web (firefox)

pourquoi context_instance=RequestContext(request) peut le faire? Utilise-t-il des cookies?

combien de temps il va maintenir cet état.

grâce

le homepage.html est:

{% if user.is_authenticated %} 
    <p>Welcome, {{ user.username }}. Thanks for logging in.</p> 
{% else %} 
    <p>Welcome, new user. Please <a href="/account/login_view">login</a></p> 
{% endif %} 

Répondre

4

Ajout du RequestContext ne change pas du tout de l'utilisateur l'état connecté. Et votre question sur les cookies n'a aucun sens du tout. Qu'est-ce que le RequestContext fait est de rendre certaines variables accessibles dans le contexte de modèle - parmi eux, en supposant que vous avez le auth contexte activé, est une variable user.

Sans le RequestContext, l'utilisateur est toujours connecté, mais vous ne transmettez pas la variable user au contexte, donc votre instruction if est évaluée à False. Rien à voir avec l'état actuel de l'utilisateur.

+0

merci Daniel, mais pourquoi l'utilisateur est toujours connecté même quand je ferme le firefox. Est-ce qu'il enregistre cet état dans la base de données. – zjm1126

0

Si vous ajoutez context_instance=RequestContext(request) contexte de la context processors que vous avez défini dans votre settings.py sera ajouté au modèle, dans votre cas cela inclut l'objet utilisateur actuel user. Si vous le supprimez, la variable n'existe pas, mais dans le modèle, cela ne déclenche pas d'exception mais le code HTML de l'utilisateur non connecté est rendu!

Les informations utilisateur sont stockées dans un session, qui utilise des cookies.