gpt4 book ai didi

python - django - 使用 django.test.Client 对用户进行身份验证

转载 作者:行者123 更新时间:2023-11-30 22:43:30 25 4
gpt4 key购买 nike

在我的测试中,我尝试创建并验证用户,但当我点击 View 时,它仍然返回 302

def test_Home(self):
self.client = Client()
self.user = User.objects.create_user("xoxo", password="bar", is_staff=True)
self.logged_in = self.client.login(
username="xoxo", password="bar")
r = self.client.get('/hudson/')
self.assertEqual(r.status_code, HTTP_200_OK)

我的 /hudson/ View 很简单:

class HomeView(PermissionRequiredMixin, generic.TemplateView):
template_name = 'foo/base.html'
permission_required = ('user.is_staff', )
login_url = reverse_lazy('admin:login')

按照 View 中的定义,我的 admin/login 收到 302 错误。

最佳答案

is_staffuser 实例上的属性,而不是权限。您被重定向是因为用户没有权限'user.is_staff'

您可以使用UserPassesTestMixin改为混合:

from django.contrib.auth.mixins import UserPassesTestMixin

class HomeView(UserPassesTestMixin, generic.TemplateView):
def test_func(self):
return self.request.user.is_staff

template_name = 'foo/base.html'
login_url = reverse_lazy('admin:login')

如果您在多个 View 中执行此操作,则可以创建自己的 mixin。

class UserIsStaffMixin(UserPassesTestMixin):
def test_func(self):
return self.request.user.is_staff

login_url = reverse_lazy('admin:login')

class HomeView(UserIsStaffMixin, generic.TemplateView):
template_name = 'foo/base.html'

关于python - django - 使用 django.test.Client 对用户进行身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41743228/

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