Je suis conscient que vous pouvez utiliser des variables de session request.session['variable_name']
, mais il ne semble pas y avoir de moyen de saisir l'identifiant de session comme une variable de la même manière. Est-ce documenté quelque part? Je ne peux pas le trouver. Merci de votre aide!
88
request.session._session_key
selon la réponse de @Viniciusrequest.session.session_key
fonctionne bien dans Django 1.6.request.session.session_key
fonctionne également très bien dans Django 1.7.request.session._get_or_create_session_key()
car, il peut arriver qu'il n'y ait pas encore d'identifiant.Les sessions Django enregistrent leur clé dans un cookie. Au moins son middleware l'extrait comme ceci:
from django.conf import settings session_key = request.COOKIES[settings.SESSION_COOKIE_NAME]
la source
dans Django> = 1.4 utilisez:
request.session._session_key
la source
Cela vous permettra d'obtenir un identifiant de session ou d'en créer un pour vous. Si vous le faites
dir(request.session)
, vous obtiendrez de nombreuses méthodes utiles.['TEST_COOKIE_NAME', 'TEST_COOKIE_VALUE', '__class__', '__contains__', '__delattr__', '__delitem__', '__dict__', '__doc__', '__format__', '__getattribute__', '__getitem__', '__hash__', '__init__', '__module__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', '_get_new_session_key', '_get_or_create_session_key', '_get_session', '_get_session_key', '_hash', '_session', '_session_key', 'accessed', 'clear', 'create', 'cycle_key', 'decode', 'delete', 'delete_test_cookie', 'encode', 'exists', 'flush', 'get', 'get_expire_at_browser_close', 'get_expiry_age', 'get_expiry_date', 'has_key', 'items', 'iteritems', 'iterkeys', 'itervalues', 'keys', 'load', 'modified', 'pop', 'save', 'session_key', 'set_expiry', 'set_test_cookie', 'setdefault', 'test_cookie_worked', 'update', 'values'] session_id = request.session._get_or_create_session_key()
la source
Utilisation:
request.COOKIES['sessionid']
la source
Pour obtenir la clé de session de manière fiable, vous devez d'abord vous assurer que la session a été créée. La documentation mentionne une
.create()
méthode de session, qui peut être utilisée pour s'assurer qu'il existe une clé de session:def my_view(request): if not request.session.session_key: request.session.create() print(request.session.session_key)
la source
Dans Django 1.8:
et
Les deux fonctionnent correctement.
la source
Vous pouvez également enregistrer vos sessions :
If "var" in request.session: Var = request.session['var'] Return httpResponse("set") Else: Return httpResponse("there isn't")
la source