Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
⊗pydjSpRsNf 7 of 204 menu
◀ ▶

Ответ 404 при отсутствии записи в Django

Частый случай: из URL берут id, тянут пост из базы. Если записи нет - нужно отдать 404, а не падать с ошибкой.

Удобнее всего get_object_or_404: при отсутствии объекта Django сам вернет ответ 404:

from django.shortcuts import get_object_or_404, render from main.models import Post def post_detail(request, id): post = get_object_or_404(Post, id=id) return render(request, 'post.html', { 'post': post, })

То же вручную - через Http404:

from django.http import Http404 from main.models import Post def post_detail(request, id): try: post = Post.objects.get(id=id) except Post.DoesNotExist: raise Http404('Post not found') return render(request, 'post.html', { 'post': post, })

Можно и просто вернуть HttpResponse со статусом 404, но Http404 / get_object_or_404 подключают стандартную страницу «не найдено».

У модели Employee должно быть поле slug. Напишите представление: по slug из URL получите работника. Если есть - отдайте страницу с данными, если нет - 404 через get_object_or_404.

Сделайте то же через try/except и Http404.

Подключите маршрут вида /employee/<slug:slug>/.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить