2011-05-31 12 views
10

मेरे पास 500.html टेम्पलेट है जो मेरा ऐप विस्फोट होने पर लोड हो जाता है लेकिन मैं जानना चाहता था कि टेम्पलेट में अपवाद के संदेश को आउटपुट करने का कोई तरीका है या नहीं?कस्टम टेम्पलेट में Django 500 संदेश

मैं यह कर तो अगर:

raise Exception("You broke it!") 

यह 500.html लोड होगा जब डीबग ध्वज सही पर सेट है, लेकिन मैं कैसे टेम्पलेट में अपवाद संदेश उपयोग कर सकते हैं? कुछ ऐसा:

{{ exception.message }} 

बहुत धन्यवाद।

जी

उत्तर

17

इस जवाब पर एक नज़र डालें:

How do I include a stacktrace in my Django 500.html page?

यह अपने टेम्पलेट/उपयोगकर्ता के लिए अपवाद पारित करने के लिए के रूप में यह कुछ अंदर कामकाज दिखाई दे सकते हैं है कि आप नहीं चाहते हैं अच्छा नहीं है बाहर के लिए उपलब्ध है, लेकिन यदि आपको वास्तव में आवश्यकता है, तो आप अपना 500 दृश्य लिख सकते हैं, अपवाद को पकड़ सकते हैं और इसे अपने 500 टेम्पलेट

views.py पर भेज सकते हैं

def custom_500(request): 
    t = loader.get_template('500.html') 
    type, value, tb = sys.exc_info(), 
    return HttpResponseServerError(t.render(Context({ 
    'exception_value': value, 
}))) 

इसके बारे में अधिक यहाँ में कहीं urls.py

handler500 = 'mysite.views.my_custom_error_view' 

टेम्पलेट

{{ exception_value }} 

: https://docs.djangoproject.com/en/1.6/topics/http/views/#the-500-server-error-view

+1

अच्छा जवाब। जैसा कि @pastylegs का उल्लेख है कि यह निश्चित रूप से * अच्छा विचार नहीं है। आप अपने उत्पादन वातावरण में बस सही करने के लिए DEBUG सेट कर सकते हैं; यह इस विधि से भी आसान है। मैं ऐसा करने के बजाय, django-sentry का उपयोग करने की सलाह दूंगा। सर्वर त्रुटि होने पर आपको वह जानकारी मिल जाएगी, लेकिन लॉक-एंड-कुंजी के पीछे, जहां यह संबंधित है। –

+1

django-sentry एक बहुत अच्छा विचार है। इसमें अतिरिक्त सुविधा भी है कि आप अपने 500 टेम्पलेट में त्रुटि-टोकन पास कर सकते हैं जो सेंड बैकएंड में स्टैकट्रैक/त्रुटि से जुड़ा हुआ है। इसका अर्थ यह है कि आपका उपयोगकर्ता इस टोकन के साथ एक त्रुटि रिपोर्ट सबमिट कर सकता है और आप उन्हें बिना किसी gobble-de-gook को देखने के वास्तविक त्रुटि को ट्रैक कर सकते हैं –

2

मैं जानता हूँ कि यह एक पुरानी धागा है, लेकिन मैं बस टी इसे स्पष्ट करना चाहते हैं:

यदि आप एक संरक्षक दृश्य चाहते हैं तो उत्तर सही है! डिफ़ॉल्ट दृश्य आपके प्रोजेक्ट की मुख्य टेम्पलेट निर्देशिका से 500.html (404.html और अन्य) लोड करेगा, यदि यह वहां है।

इसलिए, यदि आपको केवल आवश्यक पृष्ठ सामग्री को बदलना है, जैसे कि आपके त्रुटि पृष्ठ में कुछ छवियां डालने की ज़रूरत है, तो आपको बस इस स्थान पर एक टेम्पलेट फ़ाइल बनाना है।

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