django-braces 访问 mxin 不同 login_url 每个 mixin 重定向

django-braces access mxin different login_url redirect per mixin

我正在使用 djang-braces

我想为在视图上调用的每个 mixin 使用不同的 login_url。

例如,我希望所有 LoginRequiredMixin 调用都重定向到 'accounts/login',所有 MultiplePermissionsRequiredixin 调用都重定向到 'accounts/permissions'。

由于 2 个 mixin 是 AccessMixin 的子类,在视图上设置 'login_url' 将影响两个 mixin,我看不出如何为每个 Mixin 指定重定向。

我目前有这样的观点:

class View(LoginRequiredMixin, MultiplePermissionsRequiredMixin, View):
    permissions = {
    "all": (<modelmethods>),
    }
    login_url = '/accounts/permissions'

    def get(self, request, *args, **kwargs):
        cool view stuff

    def post(self, request, *args, **kwargs):
        cool view stuff

但当然这会将两个 mixin 重定向到“/accounts/permissions”

我想实现这样的目标:

class View(LoginRequiredMixin, MultiplePermissionsRequiredMixin, View):
    permissions = {
                   "all": (<modelmethods>),
        }
        Login_Redirect = '/accounts/login'
        MultiplePermissions_Redirect = '/accounts/permissions'

        def get(self, request, *args, **kwargs):
            cool view stuff

        def post(self, request, *args, **kwargs):
            cool view stuff

我不确定我是否理解得很好,但我能想到的一种解决方案是:

  • 将 login_url 设置为“/accounts/login”
  • 覆盖 check_permissions 方法,并将 login_url 设置为其中的“/accounts/permissions”。

这样,如果登录检查失败,它永远不会到达 check_permissions(我想),如果它回退到 check_permissions,您可以更改重定向 url,因此它会转到你想要的页面。

以为我从来没有尝试过。