तो बोतल सत्र की मेरी समझ है कि मैं यह एक शब्दकोश की तरह इस्तेमाल करते हैं और ऐसा करके एक सत्र के लिए मूल्यों को जोड़ सकते हैं ठीक।ब्राउजर विंडो बंद करने के बाद सत्र से कुछ फ्लास्क सत्र मान गायब क्यों होते हैं, लेकिन फिर उन्हें जोड़ने के बिना बाद में फिर से दिखाई देते हैं?</p> <p>सत्र [ 'कुंजी नाम'] = 'यहाँ कुछ मान'</p> <p>और वह काम करता है:
एक मार्ग पर मेरे पास AJAX पोस्ट का उपयोग कर क्लाइंट कॉल है, मैं सत्र में एक मान असाइन करता हूं। और यह ठीक काम करता है। मैं अपनी साइट के विभिन्न पृष्ठों पर क्लिक कर सकता हूं और सत्र सत्र में रहता है। अगर मैं ब्राउजर विंडो बंद करता हूं, और फिर मेरी साइट पर वापस जाता है, तो मेरे पास सत्र मूल्य था।
तो यह अजीब है और आपको लगता है कि समस्या यह है कि सत्र स्थायी नहीं है। मैंने फ्लास्क-ओपनिड को भी कार्यान्वित किया और यह सूचना संग्रहीत करने के लिए सत्र का उपयोग करता है और रहता है अगर मैं ब्राउज़र विंडो बंद करता हूं और इसे फिर से खोलता हूं। मैंने ब्राउजर विंडो बंद करने के बाद कुकी की भी जांच की, लेकिन मेरी साइट पर वापस जाने से पहले, और कुकी अभी भी वहां है।
व्यवहार का एक और अजीब टुकड़ा (जो संबंधित हो सकता है) यह है कि जब मैं AJAX पोस्ट रूट तक पहुंचता हूं और सही मान निर्दिष्ट करता हूं तो परीक्षण उद्देश्यों के लिए सत्र में लिखे गए कुछ मूल्य दूर हो जाएंगे। तो यह अजीब बात है, लेकिन वास्तव में अजीब बात यह है कि जब मैं ब्राउज़र विंडो बंद करता हूं और इसे फिर से खोलता हूं, और इस प्रकार वह मूल्य खो देता है जिसे मैं बनाए रखने की कोशिश कर रहा था, जो मैंने पहले खो दिया था वास्तव में वापस आ गया! उन्हें पुन: असाइन नहीं किया जा रहा है क्योंकि उन मानों को पुन: असाइन करने के लिए मेरे पायथन फ़ाइलों में कोई कोड नहीं है।
यहां कुछ आउटपुट हैं जो इसे स्पष्ट बनाने के लिए हैं। वे सभी एक वास्तविक पृष्ठ के लिए एक मार्ग से आउटपुट किए गए हैं, न कि ऊपर वर्णित AJAX पोस्ट मार्ग।
यह वह आउटपुट है जब मैंने सत्र में स्टोर करना चाहते हैं। मान कुंजी 'userid' है - अन्य सभी मान डमी हैं जिन्हें मैंने इस समस्या को हल करने की कोशिश में जोड़ा है। 'userid': 8 सत्र में तब तक रहेगा जब तक कि मैं ब्राउज़र विंडो बंद नहीं करता। मैं अन्य मार्गों तक पहुंच सकता हूं और मूल्य वैसे ही रहेगा जैसा कि इसे करना चाहिए।
['session.=', <SecureCookieSession {'adding using before request': 'hi', '_permanent': True, 'yo': 'yo'}>]
'यो' मूल्य में नहीं था:
['session.=', <SecureCookieSession {'userid': 8, 'test_variable_num': 102, 'adding using before request': 'hi', '_permanent': True, 'test_variable_text': 'hi!'}>]
अगर मैं ब्राउज़र विंडो बंद कर, और साइट में वापस जाने के लिए, लेकिन AJAX पोस्ट अनुरोध redoing बिना करते हैं, मैं इस आउटपुट प्राप्त पहला पहला आउटपुट। मुझे नहीं पता कि यह कहां से आया था। मैंने 'यो' के लिए अपना कोड खोजा और मुझे उस मूल्य को कहीं भी निर्दिष्ट करने का कोई उदाहरण नहीं है। मुझे लगता है कि मैंने इसे सत्र के दिनों में जोड़ा होगा। तो ऐसा लगता है कि यह जारी है, लेकिन जब अन्य मूल्य लिखे गए हैं तो छुपाया जा रहा है।
और यह आखिरी मैं फिर से AJAX पोस्ट रूट तक पहुंच रहा हूं, और फिर उस पृष्ठ पर जा रहा हूं जो डीबग का उपयोग करके चाबियाँ प्रिंट करता है। पहले उत्पादन मैं ऊपर पेस्ट, जो आप उम्मीद करेंगे, और 'यो' मूल्य के रूप में ही उत्पादन फिर से चला गया है (लेकिन यह वापस अगर मैं ब्राउज़र विंडो बंद आ जाएगा)
['session.=', <SecureCookieSession {'userid': 8, 'test_variable_num': 102, 'adding using before request': 'hi', '_permanent': True, 'test_variable_text': 'hi!'}>]
मैं दोनों Chrome में इस परीक्षण किया और फ़ायरफ़ॉक्स।
तो मुझे यह सब अजीब लगता है और मुझे लगता है कि यह सत्रों के काम के बारे में गलतफहमी से उत्पन्न होता है। मुझे लगता है कि वे शब्दकोश हैं और मैं उनमें शब्दकोष मान लिख सकता हूं और उन्हें बाद में पुनर्प्राप्त कर सकता हूं जब तक कि मैं सत्र को स्थायी रूप से सेट करता हूं और कुकी हटाई नहीं जाती है।
कोई विचार यह अजीब व्यवहार क्यों हो रहा है?