यदि आप बाद में अनुरोध में स्टोर डेटा तक पहुंचना चाहते हैं, तो आपको इसे कहीं स्टोर करना होगा। Django इस संग्रह करने के लिए कई तरीके प्रदान करता है:
1) आप sessions उपयोग कर सकते हैं क्वेरी स्टोर करने के लिए: हर आगंतुक आपकी साइट पर कौन एक खाली सत्र वस्तु मिल जाएगा और आप स्टोर कर सकते हैं इस वस्तु है, जो कार्य करता है के अंदर जो कुछ भी आप चाहते हैं एक ताना की तरह दोष: एक एकल आगंतुक एक साथ पेजिनेशन के साथ कई खोज नहीं कर सकता है।
2) कुकीज़ का उपयोग करें: यदि आप क्लाइंट पक्ष पर संग्रहीत कुकी सेट करते हैं, तो ब्राउज़र कुकी के डेटा को प्रत्येक अनुरोध पर जोड़ देगा जहां आप इसे एक्सेस कर सकते हैं। कुकीज अधिक सर्वर अनुकूल हैं, क्योंकि आपको सर्वर पर उनके लिए सत्र प्रबंधक की आवश्यकता नहीं है, लेकिन कुकीज़ में संग्रहीत डेटा क्लाइंट को दृश्यमान (और संपादन योग्य) है। दोष: पहले जैसा ही है।
3) छिपे हुए फ़ील्ड का उपयोग करें: आप अपने खोज-परिणाम पृष्ठ पर कुछ छिपे हुए फ़ील्ड के साथ एक फॉर्म जोड़ सकते हैं और क्वेरी को उनके अंदर संग्रहीत कर सकते हैं। फिर, जब भी आप फॉर्म जमा करते हैं तो ग्राहक क्वेरी भेज देगा। दोष: आपको अपने पृष्ठ पर पेजिनेशन के लिए सबमिट बटन के साथ एक फॉर्म का उपयोग करना होगा (सरल लिंक काम नहीं करेंगे)।
4) क्वेरी बनाएं जिसमें क्वेरी शामिल है: पोस्ट का उपयोग करने के बजाय, आप भी GET का उपयोग कर सकते हैं। उदाहरण के लिए, आपके पास "/search/hello+world/?order=votes"
और "पेजिनेटेड लिंक" जैसे "/search/hello+world/2/?order-votes"
जैसे लिंक हो सकते हैं। फिर क्वेरी को यूआरएल से आसानी से पुनर्प्राप्त किया जा सकता है। दोष: जीईटी के माध्यम से आप जो अधिकतम डेटा भेज सकते हैं वह सीमित है (लेकिन यह एक साधारण खोज के लिए कोई समस्या नहीं होनी चाहिए)।
5) एक संयोजन का उपयोग करें: आप एक सत्र या एक डेटाबेस में सभी डेटा स्टोर और एक जनरेट की गई कुंजी है जो आप URL में डाल सकते हैं से उन तक पहुँच सकते हैं। यूआरएल तब "/search/029af239ccd23/2"
(दूसरे पृष्ठ के लिए) जैसा दिख सकता है और आप पहले से संग्रहीत डेटा की एक बड़ी मात्रा तक पहुंचने के लिए कुंजी का उपयोग कर सकते हैं। यह समाधान 1 के साथ-साथ समाधान 4 की कमी को समाप्त करता है। नई कमी: ज्यादा काम :)
6) AJAX का उपयोग करें: ajax के साथ आप क्लाइंट की तरफ कुछ js-चर, जो तब अन्य अनुरोधों के लिए पारित कर सकते हैं अंदर डेटा स्टोर कर सकते हैं और अजाक्स के बाद से ही अपने परिणाम सूची अद्यतन करेगा। , चर खो नहीं रहे हैं।
धन्यवाद, यह सहायक है। इस सवाल को थोड़ा और अनपैक करने के लिए: क्या यह पेजिनेटर वर्ग के लिए इच्छित उपयोग है? मेरा दृश्य प्रारंभिक खोज फ़ॉर्म को संसाधित करता है, फिर टेम्पलेट को पहले पृष्ठ के लिए paginator.page() ऑब्जेक्ट भेजता है। परिणाम सूची उस पृष्ठ के ऑब्जेक्ट_सूची से उत्पन्न होती है। यह अजीब लगता है कि मैं इसे पूरे खोज परिणाम सेट नहीं भेज सका, और किसी भी तरह से पेज को प्रत्येक पृष्ठ के लिए खोज को पुनः सबमिट किए बिना। यदि कक्षा के लिए यह इच्छित उपयोग है, तो मैं इसके साथ काम कर सकता हूं। बस यह सुनिश्चित करना चाहते हैं कि मुझे कुछ स्पष्ट याद आ रही है। धन्यवाद! – andyashton
हां, यह इच्छित उपयोग है। यह मत भूलना कि Django एक वेब ढांचा है, और उनके प्रकृति वेब अनुरोधों से राज्यिक नहीं हैं। तो यदि आप राज्य रखना चाहते हैं, तो आपको इसे कहीं भी स्टोर करना होगा - और tux21b ने आपको कुछ विकल्प दिए हैं। –
बहुत उपयोगी, दोनों धन्यवाद। – andyashton