gpt4 book ai didi

django - 在 django View 中,如果用户不属于对象集,我如何将用户重定向到登录 View ?

转载 作者:行者123 更新时间:2023-12-04 00:10:47 25 4
gpt4 key购买 nike

我觉得这真的很简单,我只是想念它。

我有一个非常简单的基于通用类的 View 详细信息。

当我执行 get_object 时,我想确保 request.user 在属于该对象的集合中。如果没有,将它们重定向到登录。

这是我的观点:

class AwesomeDetail(LoginRequiredMixin, DetailView):
"""
An awesome detail
"""
template_name = "awesomeness/detail.html"

def get_object(self):
awesomeness = ModelName.objects.get(id=self.kwargs['pk'])
if self.request.user in awesomeness.staff.all():
return awesomness
else:
return redirect('account_login')

员工是多对多的用户。我错过了什么?重定向没有发生。它呈现模板,但当然,缺少令人敬畏的地方。

最佳答案

UserPassesTestMixin在 Django 1.9 中引入。

您定义一个 test_func 方法来根据测试是否通过返回 True/Fales

如果用户未通过测试,他们将被重定向到带有重定向字段的 settings.LOGIN_URL

UserPassesTestMixin 支持 AccessMixin 的任何字段.

from django.contrib.auth.mixins import UserPassesTestMixin


class AwesomeDetail(UserPassesTestMixin, LoginRequiredMixin, DetailView):
"""
An awesome detail
"""
template_name = "awesomeness/detail.html"
model = ModelName

def test_func(self):
if self.request.user in self.object.staff.all():
return True
else:
return False

关于django - 在 django View 中,如果用户不属于对象集,我如何将用户重定向到登录 View ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35948066/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com