2010-04-05 19 views
16

में हल नहीं किया गया है, मैं अपने ऐप के लिए 500.html टेम्पलेट का उपयोग कर रहा हूं, जो कुछ मामूली पाठ परिवर्तनों के साथ 404.html की एक समान प्रति है।django मीडिया url 500 आंतरिक सर्वर त्रुटि टेम्पलेट

दिलचस्प रूप से {{media_url}} संदर्भ चर सर्वर द्वारा हल नहीं किया जाएगा यदि 500.html प्रस्तुत किया गया है (उदाहरण के लिए जब मैं एक आंतरिक सर्वर त्रुटि को मजबूर करता हूं), जिसके परिणामस्वरूप कोई भी पृष्ठ लोड किए बिना पृष्ठ होता है।

इसे रोकने के लिए एक आसान तरीका सीएसएस के लिंक को हार्डकोड करना होगा, लेकिन मैं सिर्फ उत्सुक हूं कि media_url का समाधान क्यों नहीं हुआ है। शायद ऐसा इसलिए है क्योंकि सर्वर एक आंतरिक सर्वर त्रुटि का सामना करता है और जो संदर्भ चर को जन्म देता है और उपलब्ध नहीं है !?

+0

यह मेरे साथ '{{STATIC_URL}} 'के साथ भी होता है। – jjmontes

उत्तर

11

500 त्रुटि हैंडलर टेम्पलेट में RequestContext पास नहीं करता है, यह केवल Context का उपयोग करता है। जैसा कि आप जानते हैं, MEDIA_URL एक संदर्भ प्रोसेसर में जोड़ा गया है, जो केवल RequestContext का उपयोग करते समय शामिल होते हैं।

आप अपना खुद का 500 हैंडलर सेट कर सकते हैं और यदि आप चाहें तो RequestContext पास कर सकते हैं।

कस्टम हैंडलर 500 बनाने पर django docs का एक लिंक यहां दिया गया है।

+1

मैं डिफ़ॉल्ट 500 हैंडलर और हार्ड-कोड सीएसएस लिंक के साथ रहूंगा। यह मेरे लिए ठीक है ;-) यह जानना अच्छा है कि Django इस तरह से क्यों व्यवहार करता है। धन्यवाद! –

3

django दस्तावेज़ अनुशंसा करते हैं कि आप अपनी 500.html फ़ाइल के लिए टेम्पलेट का उपयोग न करें क्योंकि उस टेम्पलेट के प्रतिपादन में त्रुटि से निपटने का कोई तरीका नहीं है।

बस एक सीधी HTML फ़ाइल के साथ चिपके रहें जो उपयोगकर्ता को सूचित करता है कि कोई त्रुटि हुई है। उन्हें बस इतना ही पता होना चाहिए।

आप जो भी जानना चाहते हैं उसके लिए सर्वर लॉग देख सकते हैं।

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