0

我有简单的视图测试。我想简单测试'/users/',但我的应用程序需要用户登录的问题。这在这里解释

Django Unittests客户端登录:在测试套件中失败,但在Shell中没有

login_ret = self._client.login(username=self._username,
                               password=self._password)

它按预期工作。因此,我按照此处的说明创建了测试用户,并且它可以正确登录。现在,我想用这段代码从'/user/'得到响应

ret = self._client.get('/users/')

而这个回报

状态码:403

content: {"detail": "您无权执行此操作。"}

它接缝它不保留来自登录方法的会话。

这里有什么问题?

这是完整的代码

self._client = Client()
self._username = 'testuser'
self._email = 'test@test.com'
self._password = 'test'        
self._test_user = User.objects.create_user(self._username,
                                           self._email,
                                           self._password)
login_ret = self.client.login(username=self._username,
                              password=self._password)
self.assertEqual(login_ret, True)

我刚刚创建了基本的 Django REST API 应用程序并添加了 auth 模块,所以完整的视图代码是这样的(rest_api 是应用程序的名称)

from django.contrib.auth.models import User, Group
from rest_framework import viewsets
from rest_api.serializers import UserSerializer, GroupSerializer

class UserViewSet(viewsets.ModelViewSet):
    queryset = User.objects.all()
    serializer_class = UserSerializer

class GroupViewSet(viewsets.ModelViewSet):
    queryset = Group.objects.all()
    serializer_class = GroupSerializer

序列化程序.py

from django.contrib.auth.models import User, Group
from rest_framework import serializers

class UserSerializer(serializers.HyperlinkedModelSerializer):
    class Meta:
        model = User
        fields = ('url', 'username', 'email', 'groups')

class GroupSerializer(serializers.HyperlinkedModelSerializer):
    class Meta:
        model = Group
        fields = ('url', 'name')

模型.py 是空的

4

0 回答 0