2009-06-23 19 views
12

प्रलेखन, और अधिक महत्वपूर्ण बात यह है कि कुछ कोड उदाहरण बहुत उपयोगी होंगे। मैं इसे संरक्षित स्क्रिप्ट में नहीं रखना चाहूंगा, लेकिन कोड में जो आधुनिक पैकेज में जाता है।आप ज़ोप और प्लोन में कुकीज़ कैसे प्राप्त करते हैं और सेट करते हैं?

उत्तर

19

response.setCookie() विधि का उपयोग करें। आप अनुरोध ऑब्जेक्ट के माध्यम से प्रतिक्रिया ऑब्जेक्ट तक पहुंच सकते हैं। उत्तरार्द्ध आप अधिग्रहण के माध्यम से (self.REQUEST), या विचारों में पारित-इन अनुरोध वस्तु तक पहुंच कर, आमतौर पर self.request के माध्यम से पहुँच सकते हैं:

self.request.response.setCookie(name, value, **options) 

जहां options अंत तक के रूप में अतिरिक्त कुकी पैरामीटर। इस प्रकार, कुकी को गैर-सत्र कुकी में बदलने के लिए expires='date' कीवर्ड की आवश्यकता होती है, कुकी को पथ पर सीमित करना path='/somepath' कीवर्ड setCookie() विधि में होता है। सामान्य ब्राउज़र कुकी नियम यहां लागू होते हैं।

पहले से ही ब्राउज़र में सेट एक कुकी समाप्त हो करने के लिए, आप या तो एक expires='date in the past' कीवर्ड इस्तेमाल कर सकते हैं, या आप response.expireCookie() विधि है, जो आप के लिए ऐसा करता है इस्तेमाल कर सकते हैं:

self.request.response.expireCookie(name, **options) 

इस मामले तुम अब भी शामिल कर सकते हैं में path या अन्य कुकी झंडे जैसे विकल्प, लेकिन कुकी द्वारा ब्राउज़र को हटाए जाने के लिए विधि max_age और expires विकल्पों को ओवरराइड कर देगा।

हालांकि आप ज़ोप के SESSION समर्थन का उपयोग कर सकते हैं, तो आपको वास्तव में स्केलेबिलिटी समस्याओं के माध्यम से सोचने की आवश्यकता है। उदाहरण के लिए, यदि आप ZEO या RelStorage का उपयोग करते हैं, तो आपको क्लस्टर में सत्र डेटा साझा करने के तरीके के बारे में सोचना होगा। स्केलेबिलिटी एक मुद्दा होने जा रहा है, तो SESSION का उपयोग करने से बचने के लिए आम तौर पर बेहतर होता है।

+0

इस प्रतिक्रिया के लिए धन्यवाद! हम ज़ोप एप्लिकेशन के 3-4 उदाहरणों के साथ दौड़ते हैं, इसलिए * इस बारे में चिंता करने की ज़रूरत नहीं है कि हम किस घटना को मार रहे हैं, यह एक बहुत अच्छी बात है। – pydanny

6

कुकीज़ सेट करने के लिए आप RESPONSE.setCookie का उपयोग करते हैं।

>>> self.REQUEST.RESPONSE.setCookie('cookiename', 'cookievalue', expires='Wed, 22 June 2009 12:00:00 GMT') 

कुकी अगले अनुरोध में अनुरोध में खत्म हो जाएगा।

>>> self.REQUEST['cookiename'] 
'cookievalue' 

आप मूल्य के रूप में None का उपयोग कर कुकी को "हटाएं"।

** नोट, हालांकि, अधिकांश बार जब लोग कुकीज का उपयोग करते हैं तो यह सत्रों के साथ करने वाले चर को स्टोर करना है, और आप इसके लिए self.REQUEST.SESSION का उपयोग कर सकते हैं, यह आसान है।

संबंधित मुद्दे