2013-10-03 7 views
6

मैंने https://docs.djangoproject.com/en/dev/topics/http/views/ ट्यूटोरियल का उपयोग करने का प्रयास किया है, लेकिन फिर भी मुझे मानक 404 एचटीएमएल पेज मिल रहा है। मैंमैं Django में मानक हैंडलर 404, हैंडलर 403, हैंडलर 500 कैसे ओवरराइड कर सकता हूं?

handler404 = 'myview.views.custom_page_not_found' , 

मैं डिबग यह (ग्रहण का प्रयोग करके) किया था मेरी कस्टम दृश्य करने के लिए स्विच करना चाहते हैं, तो handler404(old value -'django.config.default.views.page_not_found का मूल्य) नया मान मैं ('myview.views.custom_page_not_found') दे दिया है करने के लिए बदल जाता है। लेकिन यह अभी भी पुराने 404 पेज दिखा रहा है। और मैंने सेटिंग.py DEBUG को गलत में बदल दिया है, तो यह कस्टम पेज दिखाता है। लेकिन इसमें कुछ नुकसान हुए (यह स्थैतिक फाइलें लोड नहीं करेगा और सभी, DEBUG = false सही तरीका नहीं है) इसलिए मुझे True पर रीसेट करना पड़ा।

क्या मुझे इसे लागू करने के लिए कुछ और संशोधन करना है?

उत्तर

2

मुझे लगता है कि आप कठिनाई के बिना DEBUG = True मोड में 404 पृष्ठ को नहीं बदल सकते हैं।

दस्तावेज में एक संकेत (https://docs.djangoproject.com/en/dev/topics/http/views/#the-404-page-not-found-view) नहीं है:

डीबग (अपनी सेटिंग्स मॉड्यूल में) सही पर सेट हो, तो अपने 404 दृश्य कभी नहीं इस्तेमाल किया जाएगा, और अपने URLconf प्रदर्शित किए जाएँगे , कुछ डीबग जानकारी के साथ।

0

आपका मुख्य urls.py की तह तक इस जोड़ने का प्रयास करें:

if settings.DEBUG: 
    urlpatterns += patterns('', 
     (r'^404/$', TemplateResponse, {'template': '404.html'})) 

आप का उपयोग उचित टेम्पलेट को 404.html बाहर स्वैप, मेरा मानना ​​है कि 404.html हालांकि डिफ़ॉल्ट है। फिर डीबग = सही के साथ आप अपने 404 पेज का परीक्षण कर सकते हैं।

#Enable static for runserver with debug false 
from django.conf import settings 
if settings.DEBUG is False: #if DEBUG is True it will be served automatically 
    urlpatterns += patterns('', 
      url(r'^static/(?P<path>.*)$', 'django.views.static.serve', {'document_root': settings.STATIC_ROOT}), 
    ) 

जब DEBUG = False साथ चल रहा है, मत भूलना स्थिर इकट्ठा करने के लिए:

आप इसे बाहर का परीक्षण करने के लिए डीबग के साथ चाहते हैं यह सच है = तो आप के बजाय अपने मुख्य urls.py के निचले भाग में इस की जरूरत है:

python manage.py collectstatic 

उम्मीद है कि यह मदद करता है, चीयर्स!

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