2013-10-03 5 views
6

Ho provato a utilizzare il tutorial https://docs.djangoproject.com/en/dev/topics/http/views/, ma ancora ottengo la pagina standard 404 html. Voglio passare al mio visualizzazione personalizzataCome posso eseguire l'override del gestore standard404, handler403, handler500 in Django?

handler404 = 'myview.views.custom_page_not_found' , 

ho fatto di debug (usando eclissi), allora il valore di handler404(old value -'django.config.default.views.page_not_found) viene modificato al nuovo valore ho dato ('myview.views.custom_page_not_found'). Ma mostra ancora la vecchia pagina 404. E ho cambiato settings.py DEBUG in False quindi mostra la pagina personalizzata. Ma ha alcuni svantaggi (non caricherà file statici e tutto, DEBUG = false non è la strada giusta) quindi ho dovuto reimpostare su True.

Devo apportare qualche altra modifica per l'implementazione di questo?

risposta

2

Penso che non sia possibile modificare la pagina 404 nella modalità DEBUG = True senza difficoltà.

v'è un accenno nella documentazione (https://docs.djangoproject.com/en/dev/topics/http/views/#the-404-page-not-found-view):

Se DEBUG è impostata su true (nel modulo impostazioni), quindi la visualizzazione 404 non potrà mai essere utilizzato, e la vostra URLconf sarà visualizzato al posto , con alcune informazioni di debug.

0

Prova ad aggiungere questo alla parte inferiore del vostro urls.py principale:

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

Swap la 404.html al modello appropriato di utilizzare, credo 404.html è l'impostazione predefinita però. Quindi con debug = True puoi testare la tua pagina 404.

Se volete provarlo con Debug = true, allora avete bisogno di questo in fondo alla vostra urls.py principale invece:

#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}), 
    ) 

Quando si esegue con DEBUG = False, non dimenticate di raccogliere statica:

python manage.py collectstatic 

Spero che questo aiuti, Saluti!