【问题标题】:django templateView compare permissiondjango template查看比较权限
【发布时间】:2020-04-29 13:32:50
【问题描述】:

我正在尝试检查帐户设置视图,用户名是否是超级用户,然后呈现 html。如果没有出现错误 403 ,但我如何使用模板视图来做到这一点

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

【问题讨论】:

    标签: django permissions


    【解决方案1】:

    您可以为此使用UserPassesTestMixin mixin [Django-doc],然后覆盖test_func(..) method [Django-doc]

    from django.contrib.auth.mixins import UserPassesTestMixin
    
    class AccountSettingsView(LoginRequiredMixin, UserPassesTestMixin, TemplateView):
        template_name = 'profile/account-settings.html'
    
        def test_func(self):
            return self.request.user.is_superuser

    【讨论】:

      【解决方案2】:

      您可以覆盖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)
      

      【讨论】:

      • 如果它没有找到具有正确权限的用户,那么会引发错误,是吗?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-02-20
      • 2014-05-31
      • 2013-05-15
      • 2016-01-17
      • 2015-02-12
      • 2021-02-22
      相关资源
      最近更新 更多