152 votes

Django, création d'une page d'erreur 500/404 personnalisée

En suivant le tutoriel trouvé aquí exactement, je ne peux pas créer une page d'erreur 500 ou 404 personnalisée. Si je tape une mauvaise URL, la page me donne la page d'erreur par défaut. Y a-t-il quelque chose que je devrais vérifier et qui empêcherait l'affichage d'une page personnalisée ?

Répertoires de fichiers :

mysite/
    mysite/
        __init__.py
        __init__.pyc
        settings.py
        settings.pyc
        urls.py
        urls.pyc
        wsgi.py
        wsgi.pyc
    polls/
        templates/
            admin/
                base_site.html
            404.html
            500.html
            polls/
                detail.html
                index.html
        __init__.py
        __init__.pyc
        admin.py
        admin.pyc
        models.py
        models.pyc
        tests.py
        urls.py
        urls.pyc
        view.py
        views.pyc
    templates/
    manage.py

Dans le fichier mysite/settings.py, je les ai activés :

DEBUG = False
TEMPLATE_DEBUG = DEBUG

#....

TEMPLATE_DIRS = (
    'C:/Users/Me/Django/mysite/templates', 
)

dans le fichier mysite/polls/urls.py :

from django.conf.urls import patterns, url

from polls import views

urlpatterns = patterns('',
    url(r'^$', views.index, name='index'),
    url(r'^(?P<poll_id>\d+)/$', views.detail, name='detail'),
    url(r'^(?P<poll_id>\d+)/results/$', views.results, name='results'),
    url(r'^(?P<poll_id>\d+)/vote/$', views.vote, name='vote'),
)

Je peux afficher tout autre code nécessaire, mais que dois-je changer pour obtenir une page d'erreur 500 personnalisée si j'utilise une mauvaise url ?

Modifier

SOLUTION : J'ai eu un supplément

TEMPLATE_DIRS

dans mon fichier settings.py et c'est ce qui a causé le problème.

0voto

Majid Points 1

Dans urls.py veuillez entrer ce code :

from django.conf.urls import (handler400, handler403, handler404, handler500)

handler404 = 'my_app.views.page_not_found_view'

puis ajoutez ce code dans votre views.py

from django.shortcuts import render,get_object_or_404
def page_not_found_view(request, exception):
    return render(request, '404.html', status=404)

N'oubliez pas de définir DEBUG = False et ALLOWED_HOSTS = [127.0.0.1] lorsque vous effectuez vos tests sur votre ordinateur portable.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X