[英]django - authenticate users using django.test.Client
在我的測試中,我正在嘗試創建和驗證用戶,但是當我點擊我的視圖時,它仍然返回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/
視圖很簡單:
class HomeView(PermissionRequiredMixin, generic.TemplateView):
template_name = 'foo/base.html'
permission_required = ('user.is_staff', )
login_url = reverse_lazy('admin:login')
我在視圖中定義了302到我的admin/login
。
is_staff
是user
實例上的屬性,而不是權限。 您被重定向,因為用戶沒有權限'user.is_staff'
。
您可以使用UserPassesTestMixin
mixin代替:
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')
如果您在多個視圖中執行此操作,則可以創建自己的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'
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.