РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
⊗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 для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить