Защита страницы edit_entry
Страницы edit_entry используют URL-адреса в форме http://localhost:8000/edit_entry/entry_id/, где entry_id — число. Защитим эту страницу, чтобы никто не мог подобрать URL для получения доступа к чужим записям:
views.py
...
@login_required
def edit_entry(request, entry_id):
"""Редактирует существующую запись."""
entry = Entry.objects.get(id=entry_id)
topic = entry.topic
. .if topic.owner != request.user:
. . . .raise Http404
if request.method != 'POST':
# Исходный запрос; форма заполняется данными текущей записи.
...
Программа читает запись и тему, связанную с этой записью. Затем мы проверяем, совпадает ли владелец темы с текущим пользователем; при несовпадении выдается исключение Http404.