Как ограничить доступ к странице личного профиля в django?
Например, у меня есть пользователь testuser. Его личная страница - users/account/testuser. Как я могу ограничить доступ к странице его личного профиля, чтобы только он мог посетить эту страницу, а для других она будет 403?
Я предлагаю использовать для этого UserPassesTestMixin, но я не знаю, что написать в test_func. На самом деле я хочу сравнить имя пользователя из url, и имя пользователя, и если они равны, то django разрешит доступ к странице. Или может быть есть другой способ сделать это?
Вид:
class AccountInformationView(UserPassesTestMixin, DetailView):
model = Profile
template_name = 'users/account.html'
def get_object(self, queryset=None):
return get_object_or_404(User, username=self.kwargs.get('username'))
def test_func(self):
pass
url:
path('account/<str:username>', AccountInformationView.as_view(), name='account')
вам не нужно test_func(...) вам нужно просто передать pk=self.request.user.pk в get_object.
это должно работать
class AccountInformationView(UserPassesTestMixin, DetailView):
model = Profile
template_name = 'users/account.html'
def get_object(self, queryset=None):
return get_object_or_404(User, username=self.kwargs.get('username'),pk=self.request.user.pk)