====== Traitement des erreurs 404 et 500 avec Django ====== Un statut HTTP 404 ou 500 peut être retourné, par exemple par les fonctions [[django:shortcuts#get_object_or_404_un_objet_sinon_rien|get_object_or_404]] ou [[django:shortcuts#get_list_or_404|get_list_or_404]]. Quelques règles fonctionnement à conserver en tête ===== 404 ou 500 ===== Les principes énoncés ci-dessous pour les erreurs 404 s'appliquent également pour les erreurs 500. Remplacer simplement //handler404// par //handler500// et 404.html par 500 par 500.html. ===== Une vue unique ===== La vue correspondante est chargée depuis la variable //handler404// de L'URLConf racine. Autrement dit, aucune autre vue ne sera chargée. Inutile donc de prévoir des variables //handler404// dans les urls.py des applications. ===== Une vue par défaut ===== Si la variable //handler404// n'est pas définie, Django chargera par défaut [[https://docs.djangoproject.com/en/1.5/topics/http/views/#django.views.defaults.page_not_found|django.views.defaults.page_not_found()]]. Dans la plupart des cas, il est inutile de s'en préoccuper. Cette vue est aussi appelée si l'URL appelée ne correspond à aucune des expressions régulières de la configuration. ===== Personnaliser la vue ===== Il est possible de créer une vue personnalisée. Cette vue est une vue classique, à placer dans le dossier //templates// du site. ===== DEBUG or not DEBUG, that is... ===== Si DEBUG est à TRUE dans settings, la vue ne sera JAMAIS appelée puisque les erreurs seront renvoyées en brut. C'est tout l'objectif de DEBUG, non ?