小编min*_*les的帖子

Django APIClient登录不起作用

我在单元单元测试中使用Django Rest Framework API进行身份验证时遇到问题。通过浏览器访问系统时,系统可以按预期工作。但是,在以下端点向以下类发送放置请求时,我收到401 HTTP状态:

class UserDetail(RetrieveModelMixin, DestroyModelMixin, UpdateModelMixin, GenericViewSet):
    authentication_classes = (BasicAuthentication, TokenAuthentication)
    permission_classes = IsAuthenticated,
    queryset = CustomUser.objects.all()
    serializer_class = UserSerializer
Run Code Online (Sandbox Code Playgroud)

下面的测试如下:

class AccountTests(APITestCase):

    def setUp(self):
        self.user = CustomUser.objects.create_user(email="user1@test.com", password="password1", is_staff=True)
        self.user.save()
        self.user = CustomUser.objects.get(email="user1@test.com")
        self.client = APIClient()

    def test_add_name(self):
        self.client.login(email="user1@test.com", password='password1')
        url = reverse('customuser-detail', args=(self.user.id,))
        data = {'first_name': 'test', 'last_name': 'user'}

        self.client.login(email="user1@test.com", password='password1')
        response = self.client.put(url, data, format='json')

        self.assertEqual(response.status_code, status.HTTP_200_OK)
Run Code Online (Sandbox Code Playgroud)

当打印response.data时,我收到:

{u'detail': u'Authentication credentials were not provided.'}
Run Code Online (Sandbox Code Playgroud)

client.login(...)方法返回true,但是凭据似乎未附加到标头。我在IsAuthenticated权限类中的实验有一个request.user = AnonymousUser。在BasicAuthentication类中,auth =无。

我是否缺少在settings.py中使用BasicAuth的东西?甚至在测试本身中?

谢谢。

authentication django rest frameworks apiclient

5
推荐指数
1
解决办法
1284
查看次数

标签 统计

apiclient ×1

authentication ×1

django ×1

frameworks ×1

rest ×1