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

На данный момент, если пользователь вручную запрашивает несуществующую тему или запись, он получает ошибку сервера 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.