Django rest framework 在Django Rest框架中使用身份验证测试POST问题401
我试图在django rest框架中测试向需要身份验证的视图发布数据。但我不能。我读过很多假定的解决方案,但找不到任何对我有帮助的 测试:Django rest framework 在Django Rest框架中使用身份验证测试POST问题401,django-rest-framework,Django Rest Framework,我试图在django rest框架中测试向需要身份验证的视图发布数据。但我不能。我读过很多假定的解决方案,但找不到任何对我有帮助的 测试: class TodoListCreateAPIViewTestCase(APITestCase): url = reverse("todolist:add") def setUp(self): self.username = &qu
class TodoListCreateAPIViewTestCase(APITestCase):
url = reverse("todolist:add")
def setUp(self):
self.username = "john"
self.email = "john@snow.com"
self.password = "you_know_nothing"
self.user = User.objects.create_user(self.username, self.email, self.password)
self.token = Token.objects.create(user=self.user)
#checking token here
def test_create_todo(self):
self.client.login(email=self.email, password='you_know_nothing')
client = APIClient()
client.credentials(HTTP_AUTHORIZATION='Token ' + self.token.key)
response = self.client.post(self.url, {"list_name": "Clean the room!"}, format='json')
self.assertEqual(201, response.status_code)
查看
class Addtodolist(APIView):
authentication_classes = (JSONWebTokenAuthentication,TokenAuthentication)
permission_classes = [IsAuthenticated, ]
def post(self, request):
data = request.data
todolist_instance = Todolist.objects.filter(for_user=self.request.user).first()
if not todolist_instance:
list_serilaizer = AddtodolistSerializers(data=data, context={'user': request.user})
if list_serilaizer.is_valid():
list_serilaizer.save()
return Response(data=success_response(data=list_serilaizer.data, msg='Successfully Created list!'),
status=status.HTTP_200_OK)
else:
return Response(
failure_response(data={'detail': list_serilaizer.errors()}, msg='Following errors occured'),
status=status.HTTP_400_BAD_REQUEST)
else:
return Response(
failure_response(data={'detail': 'User can have only 1 List'}, msg='User can have only 1 List'),
status=status.HTTP_409_CONFLICT)
按如下方式更改代码:
从django.shortcuts反向导入
从django.contrib.auth导入get\u user\u模型
从rest\u framework.test导入APIClient、APITESCASE
从rest_framework.authtoken.models导入令牌
类TodoListCreateAPIViewTestCase(APITestCase):
url=反向(“todolist:add”)
def设置(自):
self.username=“john”
self.email=”john@snow.com"
self.password=“你什么都不知道”
self.user=get\u user\u model().objects.create\u user(self.username,
self.email,
密码)
self.token=token.objects.create(user=self.user)
def测试\创建\待办事项(自我):
client=APIClient()
client.login(username=self.username,
email=self.email,
密码=self.password)
client.credentials(HTTP_AUTHORIZATION='Token'+self.Token.key)
响应=client.post(self.url,
{“名单名称”:“打扫房间!”},
格式(json)
self.assertEqual(response.status_代码,201)
您应该使用client.post(…)
而不是self.client.post(…)