gpt4 book ai didi

python - 如何使用 Django REST Framework 构建嵌套路由?

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

我想构建一个简单的 API 并选择了 Django REST Framework (DRF) .我要minimize path nesting作为Tom Christie (DRF 的作者)向我指出。

有两种模型:文章评论
对于这些,我想构建以下 API 路径(具有创建 [C]读取 [R]更新 [U] 访问权限):

/                      [R]
/articles/ [R]
/articles/:id/ [R]
/articles/:id/comments [R]
/comments/ [CRU]
/comments/:id [R]

模型.py:

class Article(models.Model):
text = models.CharField(max_length=140, blank=False)
recorded_at = models.DateTimeField(blank=False)
modified_at = models.DateTimeField(auto_now_add=True)


class Comment(models.Model):
message = models.CharField(max_length=140, blank=False)
created_at = models.DateTimeField(auto_now_add=True)
modified_at = models.DateTimeField(auto_now_add=True)
article = models.ForeignKey('Article', default=1, related_name='article')

序列化程序.py:

class ArticleSerializer(serializers.HyperlinkedModelSerializer):

class Meta:
model = Article


class CommentSerializer(serializers.HyperlinkedModelSerializer):

class Meta:
model = Comment

views.py:

class ArticleViewSet(mixins.RetrieveModelMixin,
mixins.ListModelMixin,
viewsets.GenericViewSet):
queryset = Article.objects.all()
serializer_class = ArticleSerializer


class CommentViewSet(mixins.CreateModelMixin,
mixins.RetrieveModelMixin,
mixins.ListModelMixin,
viewsets.GenericViewSet):
queryset = Comment.objects.all()
serializer_class = CommentSerializer

urls.py:

router = DefaultRouter()
router.register(r'articles', ArticleViewSet)
router.register(r'comments', CommentViewSet)


urlpatterns = patterns('',
url(r'^', include(router.urls)),
)

根级路径工作:

/                      [R]
/articles/ [R]
/articles/:id/ [R]
/comments/ [CRU]
/comments/:id [R]

但是嵌套路径返回 404。

/articles/:id/comments [R]

最佳答案

您的 ArticleViewSet 需要这样的东西...

@detail_route(methods=['get'])
def comments(self, request, pk=None):
article = self.get_object()
comments = article.comment_set.all()
serializer = CommentSerializer(comments)
return Response(serializer.data)

关于python - 如何使用 Django REST Framework 构建嵌套路由?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29213476/

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