Saya sadar bahwa Anda bisa mendapatkan variabel sesi menggunakan request.session['variable_name']
, tetapi tampaknya tidak ada cara untuk mengambil sessionid sebagai variabel dengan cara yang serupa. Apakah ini didokumentasikan di mana saja? Saya tidak dapat menemukannya. Terima kasih atas bantuan Anda!
89
request.session._session_key
sesuai jawaban dari @Viniciusrequest.session.session_key
berfungsi dengan baik di Django 1.6.request.session.session_key
juga berfungsi dengan baik di Django 1.7.request.session._get_or_create_session_key()
karena, bisa saja belum ada ID.Sesi Django menyimpan kunci mereka dalam sebuah cookie. Setidaknya middleware-nya mengekstraknya seperti ini:
from django.conf import settings session_key = request.COOKIES[settings.SESSION_COOKIE_NAME]
sumber
di Django> = 1.4 gunakan:
request.session._session_key
sumber
Ini akan memberi Anda ID sesi atau membuatnya untuk Anda. Jika Anda melakukannya
dir(request.session)
, Anda akan mendapatkan banyak metode yang berguna.['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()
sumber
Untuk mendapatkan kunci sesi dengan andal, Anda perlu memastikan sesi telah dibuat terlebih dahulu. Dokumentasi menyebutkan
.create()
metode sesi, yang dapat digunakan untuk memastikan ada kunci sesi:def my_view(request): if not request.session.session_key: request.session.create() print(request.session.session_key)
sumber
Menggunakan:
request.COOKIES['sessionid']
sumber
Di Django 1.8:
dan
Keduanya bekerja dengan benar.
sumber
Anda juga dapat memeriksa sesi Anda :
If "var" in request.session: Var = request.session['var'] Return httpResponse("set") Else: Return httpResponse("there isn't")
sumber