2013-05-04 2 views
12

Pour une raison quelconque, faire {{ request.session.session_key }} dans le modèle me donne une valeur None. Après quelques recherches, est venu à travers this post que mentionné à l'aide request.session._session_id mais en utilisant que dans le modèle me donne une erreur:Django 1.5 Session Key est aucune

Variables and attributes may not begin with underscores: 'request.session._session_key'

Ma compréhension des sessions de Django est que le moment où un utilisateur charge une page (une page), même s'il est anonyme, un ID de session est attribué à cette session particulière. Est-ce que ma compréhension est erronée et aussi, est-ce là où using[SESSION_SAVE_EVERY_REQUEST] est censé entrer? J'utilise le backend de base de données comme magasin de session.

Répondre

30

Pour répondre à ma propre question:

Il est toujours possible d'accéder à la clé de session à l'aide {{ request.session.session_key }}. Cependant, le docs mentionne qu'une session ne sera créée que si vous avez enregistré/modifié la session. Donc, dans mon cas, la session n'était pas définie parce que je ne la manipulais pas. L'utilisation de SESSION_SAVE_EVERY_REQUEST résoudra en effet le problème globalement. Dans mon cas d'utilisation, je n'avais besoin que d'une fonction de vue particulière, donc c'était simple:

if not request.session.get('has_session'): 
    request.session['has_session'] = True 
+0

Nice little tidbit. –