Перенаправьте все URL на 404.html если не найден в urls.py в Джанго

Как я могу перенаправить любые шаблоны url на созданную страницу " 404.html " страница, если она не существует в urls.py вместо того, чтобы показывать ошибку django.

3 ответов


создайте представление, которое отобразит созданный 404.html и установите его как handler404 в urls.py.

handler404 = 'app.views.404_view'

Django отобразит представление отладки, если включена отладка. Иначе он будет отображать 404 страницы, как указано в handler404 для всех типов страниц, если он не существует.

документация Django на настройка представлений ошибок.

Регистрация этой ответ для полного примера.


в вашем views.py, просто добавьте следующий код (не нужно ничего менять в urls.py).

from django.shortcuts import render_to_response
from django.template import RequestContext


def handler404(request):
    response = render_to_response('404.html', {},
                              context_instance=RequestContext(request))
    response.status_code = 404
    return response

поместите пользовательский 404.html в каталоге шаблонов.

источник : нажмите здесь


перейти к проекту settings.py и set DEBUG = True to DEBUG = False Затем Django перенаправляет все не установленные шаблоны на не найденные.

дополнительно, если вы хотите настроить шаблон 404, в вашем проекте urls.py

set

handler404 = ' app.просмотр.404_view'

тогда в ваших проектах view.py

from django.shortcuts import render_to_response
from django.template import RequestContext

def handler404(request):
    response = render_to_response('404.html', {},
                                  context_instance=RequestContext(request))
    response.status_code = 404
    return response

и, наконец, в свой templates добавить 404.html и заполните его тем, что вы хотите показать конечному пользователю.