Django में, मैं request.session सत्र का पता कैसे लगा सकता हूं और इसे एक चर के रूप में उपयोग कर सकता हूं?


88

मुझे पता है कि आप सत्र चर का उपयोग कर प्राप्त कर सकते हैं request.session['variable_name'], लेकिन सत्रीय को एक समान तरीके से चर के रूप में हड़पने का कोई तरीका प्रतीत नहीं होता है। क्या यह कहीं भी प्रलेखित है? मैं इसे नहीं ढूँढ सकता। आपकी सहायताके लिए धन्यवाद!

जवाबों:


142

बहुत सरल:

request.session.session_key

ध्यान दें कि यदि कोई सत्र, कोई कुंजी, कोई सत्र नहीं है तो कुंजी मौजूद रहेगी। यदि सत्र मौजूद है तो आप इसका उपयोग कर सकते हैं। यदि आप एक सत्र बनाना चाहते हैं, तो कॉल करें।


3
@VebjornLjosa क्या करता है?
21

3
@aehike: request.session._session_key@Vinicius से जवाब के अनुसार
ह्यूजेस

3
request.session.session_keyDjango 1.6 में ठीक काम करता है।
ecstaticpeon

9
request.session.session_keyDjango 1.7 में भी ठीक काम करता है।
एंड्रयू ई

3
मैं उपयोग करना पसंद करता हूं request.session._get_or_create_session_key()क्योंकि, ऐसा हो सकता है कि अभी कोई आईडी नहीं है।
patroqueeet

24

Django सत्र कुकी में अपनी कुंजी सहेजते हैं। कम से कम इसका मिडलवेयर इसे इस तरह से निकालता है:

from django.conf import settings
session_key = request.COOKIES[settings.SESSION_COOKIE_NAME]

1
यदि सत्र कुंजी मौजूद नहीं है, तो यह मदद नहीं करता है।
ग्रेग

19

Django में = = 1.4 उपयोग:

request.session._session_key

9
एर्म, निजी चर का मुख्य आशय (अंडरस्कोर के साथ शुरू होने वाले) यह है कि आपको उनका उपयोग नहीं करना चाहिए ।
मिचेल गौरी

1
@ MichałGórny तो विकल्प क्या है? अगर कोई नहीं है, तो मैं नहीं देखता कि हमारे पास कैसे विकल्प है ...
मार्क

1
विकल्प उचित कोड लिखना है। यदि django सत्र कुंजी प्राप्त करने के लिए सार्वजनिक API प्रदान नहीं करता है , तो इसका मतलब है कि आपको उस कुंजी का उपयोग नहीं करना चाहिए। मैं आपको यह बताए बिना नहीं बता सकता कि आप वास्तव में क्या करने की कोशिश कर रहे हैं, लेकिन फिर यह शायद अलग प्रश्न का क्षेत्र है।
माइकल गोरी

12

यह आपको या तो एक सत्र आईडी प्राप्त करेगा या आपके लिए एक बना देगा। यदि आप करते हैं dir(request.session), तो आपको कई उपयोगी तरीके मिलेंगे।

['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()


6

मज़बूती से सत्र कुंजी प्राप्त करने के लिए, आपको यह सुनिश्चित करने की आवश्यकता है कि सत्र पहले बनाया गया है। दस्तावेज़ में .create()सत्र विधि का उल्लेख है , जिसका उपयोग यह सुनिश्चित करने के लिए किया जा सकता है कि सत्र कुंजी है:

def my_view(request):
    if not request.session.session_key:
        request.session.create()

    print(request.session.session_key)


-1

आप अपने सत्रों में भी जाँच कर सकते हैं:

If "var" in request.session:
       Var = request.session['var']
        Return httpResponse("set")
Else:
       Return httpResponse("there isn't")
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.