2011-01-06 8 views
9

मेरा प्रश्न सरल है, मैं कैसे HTTP स्थिति 405 के लिए एक कस्टम त्रुटि पृष्ठ प्रदर्शित करते हैं (विधि की अनुमति नहीं) Django जब में एक कस्टम त्रुटि Django में HTTP स्थिति 405 के लिए पेज (विधि की अनुमति नहीं) प्रदर्शित करने के लिए कैसे @require_POST सजावट का उपयोग कर?का उपयोग करते समय @require_POST

मैं django.views.decorators.http.require_POST सजावट का उपयोग कर रहा हूं, और जब पृष्ठ अनुरोध के द्वारा पृष्ठ का दौरा किया जाता है, तो कंसोल 405 त्रुटि दिखाता है, लेकिन पृष्ठ केवल खाली है (यहां तक ​​कि एक Django त्रुटि पृष्ठ भी नहीं)। मैं इस प्रकार की त्रुटि के लिए एक कस्टम और/या डिफ़ॉल्ट त्रुटि पृष्ठ प्रदर्शित करने के लिए Django कैसे प्राप्त करूं?

संपादित करें: यह उल्लेखनीय है कि मैंने अपने टेम्पलेट फ़ोल्डर में 404.html, 500.html और 405.html पृष्ठ डालने का प्रयास किया है - लेकिन इससे कोई मदद नहीं मिलती है। मैंने DEBUG = True और False के बीच भी कोई लाभ नहीं लिया है।

उत्तर

12

आप कस्टम Django मिडलवेयर लिखने के लिए की है। आप इस एक के साथ शुरू और यह विस्तार करता है, तो 405.html फ़ाइल मौजूद है और इतने पर जाँच करने के लिए कर सकते हैं:

http://docs.djangoproject.com/en/dev/topics/http/middleware/

:

चेक डॉक्स अगर आप मिडलवेयर स्थापित करने के लिए पता नहीं कैसे समस्या एक 405 स्थिति नहीं लौटा रहा है - - जनसंपर्क

http://mitchfournier.com/2010/07/12/show-a-custom-403-forbidden-error-page-in-django/

+0

धन्यवाद - यह अब इतना स्पष्ट प्रतीत होता है! लेकिन मुझे उम्मीद से काफी अधिक परेशानी है। –

0

आप documentation और django.views.defaults आप देखते हैं कि केवल 404 और 500 त्रुटियों एक तरीका है कि आप केवल 404.html resp जोड़ने के लिए में समर्थित हैं के स्रोत कोड में ढूंढें। 500.html अपनी टेम्पलेट निर्देशिका में।

दस्तावेज़ में। आप निम्नलिखित

Django में HTTP त्रुटि कोड लौटाना आसान है। वहाँ आम HTTP स्थिति 200 के अलावा अन्य कोड के एक नंबर ("ठीक है" जिसका अर्थ है) के लिए HttpResponse की उपवर्गों हैं। आप अनुरोध/प्रतिक्रिया दस्तावेज में उपलब्ध उप-वर्गों की पूरी सूची पा सकते हैं।

इस प्रकार यदि आप एक 405 त्रुटि वापस जाने के लिए चाहते हैं, आप HttpResponseNotAllowed class

एक example

+0

मुझे डर है कि प्रश्न का उत्तर नहीं कर रहे हैं रहा हूँ: आप इस लेख की जांच कर सकते orem @require_POST सजावट का उपयोग करते समय उस प्रतिक्रिया के लिए एक टेम्पलेट प्रदर्शित कर रहा है। –

+0

आप सही हैं, सजावट का उपयोग कर रहे जानकारी को याद किया। –

0

उपयोग करने के लिए मुझे यकीन है कि संभव है नहीं कर रहा हूँ है। शायद आपको एक बग रिपोर्ट दर्ज करने पर विचार करना चाहिए।

+0

ठीक है, अब हम जानते हैं कि यह संभव है। लेकिन यह 404 और 500 के लिए एक पृष्ठ जोड़ने के समान सरल है। ध्यान दें कि @require_POST आदि के लिए एक अंतर्निहित सजावट है, कोई भी यह आसान होने की अपेक्षा करेगा। –