Использование метода get_object_or_404()

We use cookies. Read the Privacy and Cookie Policy

На данный момент, если пользователь вручную запрашивает несуществующую тему или запись, он получает ошибку сервера 500. Django пытается отобразить страницу, но не располагает достаточной информацией для этого, что приводит к ошибке 500. Такая ситуация более точно обрабатывается как ошибка 404, и это поведение можно реализовать при помощи вспомогательной функции Django get_object_or_404(). Эта функция пытается получить запрошенный объект из базы данных, а если этот объект не существует — инициирует исключение 404. Мы импортируем эту функцию в views.py и используем ее вместо get():

views.py

...

from django.shortcuts import render, get_object_or_404

from django.http import HttpResponseRedirect, Http404

...

@login_required

def topic(request, topic_id):

"""Выводит одну тему и все ее записи."""

. .topic = get_object_or_404(Topic, id=topic_id)

# Проверка того, что тема принадлежит текущему пользователю.

...

Теперь при запросе несуществующей темы (например, http://localhost:8000/topics/999999/) появляется страница ошибки 404. Чтобы развернуть это изменение, выполните закрепление и отправьте проект на Heroku.