उपरोक्त उल्लिखित चीजें मुझे लगभग एक ही परिणाम दे रही हैं जो सोच रही थी कि उनमें क्या मुख्य अंतर है।Django: अंतर क्या है b/w HttpResponse बनाम HttpResponseRedirect बनाम render_to_response
उत्तर
response = HttpResponse("Here's the text of the Web page.")
:
HTTP कोड 200 (ठीक), और सामग्री निर्माता के लिए पारित के साथ एक नयाHttpResponse
वस्तु का निर्माण करेगा। आम तौर पर, आपको केवल इसका उपयोग वास्तव में छोटे प्रतिक्रियाओं के लिए करना चाहिए (जैसे AJAX फॉर्म रिटर्न वैल्यू, अगर यह वास्तव में सरल है - बस एक संख्या या तो)।HttpResponseRedirect("http://example.com/")
:
HTTP कोड 302 के साथ एक नयाHttpResponse
वस्तु पैदा करेगा (मिला/अस्थायी रूप से ले जाया गया)। इस एक पृष्ठ पर रीडायरेक्ट करने के लिए उपयोग की जानी चाहिए (और सफल फ़ॉर्म पोस्ट के बाद जैसे)
डॉक्स से:
class HttpResponseRedirect
निर्माता एक भी तर्क लेता है - रीडायरेक्ट करने के लिए पथ सेवा मेरे। यह एक पूर्णतः योग्य यूआरएल (उदा। 'http://www.yahoo.com/search/') या कोई डोमेन (उदा। '/ Search /') के साथ एक पूर्ण यूआरएल हो सकता है। ध्यान दें कि यह HTTP स्थिति कोड 302.
पर्याप्त कहा रिटर्न ...
render_to_response(template[, dictionary][, context_instance][,mimetype])
किसी दिए गए संदर्भ शब्दकोश के साथ किसी दिए गए टेम्पलेट रेंडर और रिटर्न कि गाया के साथ एक HttpResponse वस्तु पाठ।
आपके लिए प्रतिक्रिया बनाने के लिए चर के दिए गए शब्दकोश के साथ टेम्पलेट प्रस्तुत करने का एक कॉल है। यह वही है जो आपको अधिकांश समय का उपयोग करना चाहिए, क्योंकि आप टेम्पलेट्स में अपनी प्रस्तुति तर्क रखना चाहते हैं और कोड में नहीं।
render_to_response POST को संसाधित करने के बाद उपयोग नहीं किया जाना चाहिए। पोस्ट प्रोसेसिंग के बाद रीडायरेक्ट एक बेहतर विकल्प है क्योंकि यह संदेश प्रदर्शित नहीं करेगा कि फॉर्म फिर से सबमिट किया जाएगा। – cethegeek
मैंने वास्तव में लिखा है कि मेरे जवाब में ... मैं इसे बोल्ड करूंगा। –
विस्तृत उत्तर के लिए धन्यवाद साथी :) –