Для моего проекта я создал Decorator , который проверял, вошел ли в систему нужный пользователь:
#decorator.py
from django.http import HttpResponseRedirect
from django.core.urlresolvers import reverse
def same_user_required(func):
def wrapper(request, user):
if not request.user.is_authenticated():
return HttpResponseRedirect(reverse('login-view'))
if not user == request.user.username:
return HttpResponseRedirect(reverse('login-view'))
return func(request, user)
return wrapper
Затем вы добавляете его к любым представлениям, требующим проверки:
#view_profile.py
from apps.utilities.decorators import same_user_required
@same_user_required
def edit_profile(request, user):
Обратите внимание, что мой URL содержит имя пользователя /profile/edit/<username>
, из которого поступает параметр, в представлении edit_profile
.
Другой способ - использовать встроенный декоратор Django, user_passes_test (см. Django Book Chap 14 для примера его использования. должен написать тест, а не шаблонный код декоратора.