Как ограничить доступ к странице личного профиля в 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)
Вернуться на верх