Защита страницы edit_entry

We use cookies. Read the Privacy and Cookie Policy

Страницы 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.