Задать вопрос
@javanub

Не работает handler404, почему?

Кто может объяснить почему не работает handler404?

Основной urls.py проекта:
import project.settings
from django.conf.urls import include, url
from django.contrib import admin

handler404 = 'project.views.handler404'

urlpatterns = [
    url(r'^$', include('apps.main.urls')),
    url(r'^quote/', include('apps.quote.urls')),
    url(r'^admin/', include(admin.site.urls)),
    url(r'^media/(.*)$', 'django.views.static.serve', {'document_root': project.settings.MEDIA_ROOT}),
]


собственно вьюха из этой же папки project:
from django.shortcuts import render


def handler404(request):
    return render(request, '../templates/errors/404.html', status=404)


DEBUG = True
  • Вопрос задан
  • 3086 просмотров
Подписаться 2 Оценить Комментировать
Решения вопроса 1
mututunus
@mututunus
Backend developer (Python, Golang)
Режим дебага выключите.
DEBUG = False
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
syschel
@syschel
freelance/python/django/backend
А ошибка какая?
Обычно в пути к шаблону не указывается папка темплайтов и темболее ../ в начале.

Django 1.8
settings.py
import os
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [os.path.join(BASE_DIR, 'templates')],
        'APP_DIRS': True,
    },
]


views.py
def handler404(request):
    return render(request, 'errors/404.html', status=404)


Django < 1.8
settings.py
import os
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
TEMPLATE_DIRS = (
    os.path.join(BASE_DIR, "templates"),
)
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы