По умолчанию django отображает шаблон 404.html
.Создайте этот файл в любом месте, где находятся ваши шаблоны.Например, вы можете создать каталог templates
в корневом каталоге проекта django, а затем добавить его в TEMPLATE_DIRS
in settings.py
:
import os
BASE_DIR = os.path.abspath(os.path.dirname(__file__))
TEMPLATE_DIRS = (
os.path.join(BASE_DIR, 'templates/'),
)
. Другое решение - написать собственное промежуточное ПО, которое будет проверять404 ответ, и решить, что отображать.Это особенно полезно, если вы хотите иметь запасное решение (например, статические страницы) или поиграть с ответом и, например, выполнить поиск по сайту и показать возможные варианты.
вот пример промежуточного программного обеспечения от django.contrib.flatpages
.он проверяет, определен ли url в базе данных, если да - возвращает эту страницу, если нет, передает и возвращает ответ по умолчанию.
class FlatpageFallbackMiddleware(object):
def process_response(self, request, response):
if response.status_code != 404:
return response # No need to check for a flatpage for non-404 responses.
try:
return flatpage(request, request.path_info)
# Return the original response if any errors happened. Because this
# is a middleware, we can't assume the errors will be caught elsewhere.
except Http404:
return response
except:
if settings.DEBUG:
raise
return response