【发布时间】:2017-12-16 12:07:48
【问题描述】:
美好的一天!
我对 detail_route 有这样的看法:
class PostView(viewsets.ModelViewSet):
queryset = Post.objects.all()
serializer_class = PostSerializer
@detail_route(methods=['POST'])
def like(self, request, pk=None):
post = self.get_object()
post.like(request.user)
return Response({'result': 'success'})
所以,like 函数的 url 是 /api/posts/{id}/like
我尝试像这样使用django.test.TestCase 对其进行测试:
post = Post.objects.first()
url = reverse('api:post-detail', args=[post.id])
url = urljoin(url, 'like')
response = self.client.post(url, content_type='application/json', follow=True)
我必须使用follow=True,因为我得到代码 300 重定向,但是当我需要 POST 时,重定向返回给我 GET 请求。
我尝试使用 APIClient 和 APIRequestFactory 并得到相同的错误或 myapp.models.DoesNotExist
坦克请注意!
【问题讨论】:
标签: python django unit-testing testing django-rest-framework