জাজানোতে, আমি কীভাবে অনুরোধ.অ্যাসেসন সেশনটি খুঁজে পেতে এবং এটিকে পরিবর্তনশীল হিসাবে ব্যবহার করতে পারি?


89

আমি সচেতন যে আপনি সেশন ভেরিয়েবলগুলি ব্যবহার করে পেতে পারেন request.session['variable_name']তবে সেশনিডকে একইভাবে ভেরিয়েবল হিসাবে ধরার উপায় বলে মনে হয় না। এই কোথাও নথিভুক্ত করা হয়? আমি এটি খুঁজে পাচ্ছি না। আপনার সাহায্যের জন্য ধন্যবাদ!

উত্তর:


145

অনেক সহজ:

request.session.session_key

নোটটি কেবল তখনই উপস্থিত থাকবে যদি কোনও সেশন থাকে, কোনও কী থাকে না, সেশন হয় না। কোনও সেশন উপস্থিত থাকলে তা পরীক্ষা করতে আপনি এটি ব্যবহার করতে পারেন। আপনি যদি একটি সেশন তৈরি করতে চান, কল করুন


4
@ এহিকে: @ ভিনিসিয়াসের request.session._session_keyউত্তর অনুসারে
হিউজেস

4
request.session.session_keyজাজানো 1.6 এ সূক্ষ্মভাবে কাজ করে।
ইস্তেস্তাদ্বীপ

9
request.session.session_keyজাজানো ১.7 এও দুর্দান্ত কাজ করে।
অ্যান্ড্রু ই

4
আমি ব্যবহার করা পছন্দ করি request.session._get_or_create_session_key()কারণ, এটি ঘটতে পারে যে এখনও কোনও আইডি নেই।
প্যাট্রোকুইট

4
এটি কাজ করে কিনা পুরোপুরি নির্ভর করে যে সেশনটি তৈরি করা হয়েছে কিনা। আমার উত্তর দেখুন
গ্রেগ

25

জাজানো সেশনগুলি একটি কুকিতে তাদের কীটি সংরক্ষণ করে। কমপক্ষে এর মিডওয়্যারের এটি এ জাতীয়ভাবে বের করে:

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

4
সেশন কীটি উপস্থিত না থাকলে এটি সহায়তা করে না।
গ্রেগ

19

জ্যাঙ্গোতে> = 1.4 ব্যবহার করুন:

request.session._session_key

9
আর্ম, প্রাইভেট ভেরিয়েবলগুলির মূল উদ্দেশ্য (আন্ডারস্কোর দিয়ে শুরু হওয়া) হ'ল আপনার সেগুলি ব্যবহার করা উচিত নয়
মিশা গার্নি

4
@ MichałGórny তাহলে বিকল্প কি? যদি কিছুই না থাকে তবে আমি কীভাবে আমাদের পছন্দ করব তা আমি দেখতে পাই না ...
মার্ক

4
বিকল্পটি হ'ল সঠিক কোড লেখা। যদি জাঙ্গো সেশন কীটি পেতে কোনও সর্বজনীন এপিআই সরবরাহ না করে , তবে এর সহজ অর্থ হল আপনার কীটি ব্যবহার করার কথা নয়। আপনি ঠিক কী করার চেষ্টা করছেন তা না জেনে আমি আপনাকে আরও কিছু বলতে পারি না তবে সম্ভবত এটি পৃথক প্রশ্নের ক্ষেত্র।
মিশা গার্নি

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

8

সেশন কীটি বিশ্বস্ততার সাথে পাওয়ার জন্য, আপনাকে অবশ্যই নিশ্চিত করতে হবে যে সেশনটি প্রথম তৈরি করা হয়েছে। ডকুমেন্টেশনে একটি .create()সেশন পদ্ধতি উল্লেখ করা হয়েছে , যা সেশন কী রয়েছে তা নিশ্চিত করার জন্য ব্যবহার করা যেতে পারে:

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

    print(request.session.session_key)


3

জ্যাঙ্গো ১.৮ এ:

অনুরোধ.অ্যাসিওশন.অ্যাসিওন_কি

এবং

অনুরোধ.অ্যাসিওশন._সেশন_কি

উভয়ই সঠিকভাবে কাজ করে।


-1

আপনি আপনার সেশনগুলিতেও পরীক্ষা করতে পারেন :

If "var" in request.session:
       Var = request.session['var']
        Return httpResponse("set")
Else:
       Return httpResponse("there isn't")
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.