Este tutorial es simple, como crear nuestro propio error 404 en nuestro proyecto Django, generalmente Django no ofrece algo como esto una vez intentamos acceder a una url no existente.
No es que este error este mal, pero en ocaciones queremos tener algo mas que simplemente un error por defecto, si no algo mas elegante como el 404 de github.
En fin, mano a la obra.
Para lograr algo como esto, se puede lograr de varias formas, la primera y mas facil es crear un archivo con el nombre 404.html en nuestro directorio donde colocamos nuestros templates.
Ejemplo de 404
See the Pen 404 Page pure CSS by Ed Bond (@edbond88) on CodePen.
La otra forma de hacerlo es sobre escribiendo el «handler» del error 404 en nuestro archivo urls.py, ojo no me refiero al archivo de nuestra aplicacion si no al del projecto.
En su archivo de views.py de su aplicacion crear esta vista
from django.views.defaults import page_not_found def mi_error_404(request): nombre_template = '404.html' return page_not_found(request, template_name=nombre_template)
En el archivo url.py del projecto
from django.conf.urls import handler404 from app_name.views import mi_error_404 handler404 = mi_error_404
Echo esto ya tendremos nuestro error 404 personalizado. Ahora pensaras por que tomar el segundo paso y no el primero, bueno si tienes mas de una aplicacion en el mismo projecto posiblemente quieras tener varios errores 404, una forma de lograr esto seria en base al patron de la url que esta llegando el error, algo como esto:
def mi_error_404(request): nombre_template = '404.html' if request.path.startswith('/app1'): nombre_template = 'app1_404.html' elif request.path.startswith('/app2'): nombre_template = 'app2_404.html' return page_not_found(request, template_name=nombre_template)
Para los demas errores la tematica es la misma, colocar un template con el codigo del error, o sobre escribir el handler de ese error en el url.py
Espero les sirva de algo al igual que me sirvió a mi.