2016-02-02 16 views
7

documentation के अनुसार यह काफी सरल होना चाहिए: मुझे बस handler404 को परिभाषित करने की आवश्यकता है। वर्तमान में मैं कर रहा हूँ, मेरी शीर्ष urls.py में:django में कस्टम हैंडलर 404 को व्यवस्थित तरीके से कैसे सेट करें?

urlpatterns = [ 
    ... 
] 

handler404 = 'myapp.views.handle_page_not_found' 

आवेदन स्थापित किया गया है। इसी दृश्य सिर्फ (कुछ समय के मैं सिर्फ 404 के मामले में मुख्य पृष्ठ पर रीडायरेक्ट करना चाहते हैं के लिए) है:

def handle_page_not_found(request): 
    return redirect('homepage') 

लेकिन यह कोई प्रभाव नहीं है: मानक (डीबग) 404 पेज दिखाया गया है।

प्रलेखन थोड़ा अस्पष्ट है:

  • जहां handler404 परिभाषित किया जाना चाहिए? प्रलेखन URLconf में कहता है लेकिन, वास्तव में कहां? मेरे पास कई अनुप्रयोग हैं, प्रत्येक एक अलग urls.py के साथ। क्या मैं इसे किसी भी में डाल सकता हूं? शीर्ष URLconf में? क्यूं कर? यह दस्तावेज कहां है?
  • इस हैंडलर द्वारा क्या पकड़ा जाएगा? क्या यह django.http.Http404, django.http.HttpResponseNotFound, django.http.HttpResponse (status=404 के साथ) पकड़ जाएगा?
+1

आपकी सेटिंग्स में 'DEBUG 'क्या है? यदि यह 'सत्य' है, तो क्या आप इसे 'गलत' में बदल सकते हैं और देख सकते हैं? –

+0

@ShangWang: धन्यवाद! दरअसल, इसे 'गलत' पर सेट करने से समस्या हल हो जाती है। यह दस्तावेज नहीं है, afaik। – dangonfast

+0

@delavnog - इसमें [त्रुटि रिपोर्टिंग अनुभाग] (https://docs.djangoproject.com/en/1.9/howto/error-reporting/#error- रिपोर्टिंग) - "जब DEBUG गलत है, ..." – Sayse

उत्तर

5

जैसा कि हमने चर्चा की है, आपका सेटअप सही है, लेकिन सेटिंग्स.py में आपको DEBUG=False बनाना चाहिए। यह एक उत्पादन सुविधा है और विकास पर्यावरण में काम नहीं करेगा (जब तक आपके पास DEBUG=False पाठ्यक्रम की मशीन में नहीं है)।

+2

मैं अपना बदलता हूं विकास मोड में 'गलत', और अभी भी डिफ़ॉल्ट django त्रुटि पृष्ठ दिखाते हैं। – Rexford

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