”;
What is 404 Page Not Found Error?
The HTTP protocol defines various status codes to indicate different types of HTTP responses. “404” is the HTTP status code that corresponds to the situation when the server cannot find the requested webpage. It is called as “404 error”, also known as the “404 Not Found error” or “HTTP 404 Not Found”.
Django”s Default Template for 404 Error
In Django, a given URL route is mapped to a certain view. The 404 error may appear when a URL doesn’t have a corresponding view.
Let us enter a URL route that has not been defined in the URLCONF of the Django project −
The Django project, created with the startproject template, has the DEBUG parameter set to TRUE. The above page appears when a view isn”t found and DEBUG is set to TRUE. This is Django’s default template for 404 error code.
Render a Custom Error Page
To render a custom error page, set the DEBUG parameter to FALSE in the “setings.py” module. Also, you need to specify the list of ALLOWED_HOSTS such as localhost or a certain domain such as https://example.com. Set this parameter to “*” for any hostname.
DEBUG = False ALLOWED_HOSTS = ["*"]
After these changes, the same URL doesn’t show any DEBUG message as in the earlier figure.
You can further design a customised template, name it as “404.html”, and place it in the “BASE_DIR/template” folder.
404.html
<html> <body> <h2 style="text-align: center; color: blue; font-weight:900;">The Page is Not found</h2> </body> </html>
Now, this page is displayed whenever the view is not found.
Another approach to customize the 404 error response is to define a handler404() view in “views.py” file under the project folder.
Note − The view.py module is situated by default in the app folder. You need to create the same in the project folder explicitly.
views.py
from django.shortcuts import render def handler404(request, exception): return render(request, ''404handler.html'')
Then, direct Django to render this template whenever a view isn’t found by assigning the handler404 variable with handler404() function, in the URLCONF of the project.
urls.py
from django.contrib import admin from django.urls import path from . import views handler404 = views.handler404 urlpatterns = [ path(''admin/'', admin.site.urls), ]
404handler.html
Save the following HTML script as 404handler.html in the templates folder −
<html> <body> <h2 style="text-align: center; color: blue; font-weight:900;">The Page is Not found</h2> <br> <br> <a href="../home"><b>Back to Home</b></a> </body> </html>
Visit any undefined URL route to render this customized 404 error page.
”;