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,因此它会转到你想要的页面。
以为我从来没有尝试过。
我正在使用 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,因此它会转到你想要的页面。
以为我从来没有尝试过。