django templateView разрешение на сравнение - PullRequest
1 голос
/ 12 января 2020

Я пытаюсь проверить, отображается ли настройки учетной записи, а имя пользователя является суперпользователем, а затем отобразить html. если не переходит к ошибке 403, но как я могу сделать это, используя templateview

class AccountSettingsView(LoginRequiredMixin, TemplateView):
    template_name = 'profile/account-settings.html'
    if request.user.is_superuser:
        # error 403
    else:
        template_name

Ответы [ 2 ]

0 голосов
/ 12 января 2020

Вы можете переопределить метод dispatch и проверить это условие там:

class AccountSettingsView(LoginRequiredMixin, TemplateView):
    template_name = 'profile/account-settings.html'

    def dispatch(self, request, *args, **kwargs):
        if self.request.user.is_superuser:
            # raise 403
        return super().dispatch(request, *args, **kwargs)
0 голосов
/ 12 января 2020

Для этого можно использовать UserPassesTestMixin mixin [Django -doc] , а затем переопределить метод test_func(..) [Django -doc] :

from django.contrib.auth.mixins import <b>UserPassesTestMixin</b>

class AccountSettingsView(LoginRequiredMixin, <b>UserPassesTestMixin</b>, TemplateView):
    template_name = 'profile/account-settings.html'

    def test_func(self):
        return self.request.user.is_superuser
...