gpt4 book ai didi

python - django rest detail_route 测试

转载 作者:太空宇宙 更新时间:2023-11-04 00:33:29 25 4
gpt4 key购买 nike

美好的一天!
我有一个像这样的 detail_route View :

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 请求。我尝试使用 APIClientAPIRequestFactory 并得到相同的错误或 myapp.models.DoesNotExist
坦克引起你的注意!

最佳答案

你得到 300 分的事实应该表明你做错了什么。

与其反转主 URL,然后手动加入详细路由扩展,不如直接反转到您想要的完整 URL。作为the docs for detail_route 显示,该装饰器以 <model>-<detail-method> 的形式为您提供命名路由.所以:

url = reverse('api:post-like', args=[post.id])
response = self.client.post(url, content_type='application/json')

关于python - django rest detail_route 测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45051306/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com