【问题标题】:RetrieveAPIView Django Rest framework, return custom response when lookup_field detail does not exists in databaseRetrieveAPIView Django Rest框架,当数据库中不存在lookup_field详细信息时返回自定义响应
【发布时间】:2021-05-28 10:07:36
【问题描述】:

我是 Django 休息框架的新手。 我有一个模型和序列化程序。尝试使用 Lookup_field 使用 RetrieveAPIView 检索数据。

当lookup_filed 数据不存在于数据库中时,我想返回自定义响应。

以下是我的看法

class GetData(RetrieveAPIView):    
    serializer_class = DataSerializer
    lookup_field='id'
    action = "retrieve"
    def get_queryset(self):           
       Data.objects.all()   

这是我的回应: { “详细信息”:“未找到。” }

【问题讨论】:

  • 如果你覆盖def get_queryset(),请return查询集,你上面的代码不会返回查询集,而是返回None

标签: django django-rest-framework django-views django-class-based-views


【解决方案1】:

只要对象存在于数据库中,使用您查询的 id,您就应该能够使用 RetrieveAPIView 检索该对象,如下所示:

在您的views.py 文件中:

class GetData(RetrieveAPIView):
    queryset = Data.objects.all()
    serializer_class = DataSerializer

在您的urls.py 文件中:

urlpatterns = [
    path('your_custom_path/<pk>', GetData.as_view())
]

这将返回具有在您运行请求的路径中定义的指定主键 (id) 的对象。

GET /your_custom_path/2 将返回 ID 为 2 的 Data 对象。这个超级简单的代码是使用 RetrieveAPIView 的好处,如果您想添加更多可自定义的过滤,我会要求查看 APIView官方 django rest 框架文档

【讨论】:

    猜你喜欢
    • 2018-02-13
    • 2020-10-11
    • 1970-01-01
    • 1970-01-01
    • 2018-05-14
    • 2016-01-27
    • 2017-09-23
    • 1970-01-01
    • 2020-06-16
    相关资源
    最近更新 更多