首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Django Rest框架- URL查询不工作?

Django Rest框架- URL查询不工作?
EN

Stack Overflow用户
提问于 2020-07-02 10:03:48
回答 1查看 683关注 0票数 0

我正在用Django编写一个使用Django Rest框架的应用程序。对API的GET请求可以工作,但是当我向其添加一个查询(如'?id=1845‘)时,它实际上并不执行查询,它仍然返回完整的结果列表。

在下面的代码中,我试图查询“指示列表”

views.py

代码语言:javascript
运行
AI代码解释
复制
from django.shortcuts import render
from django.http import JsonResponse

from rest_framework.decorators import api_view
from rest_framework.response import Response
from .serializers import IndicatorSerializer

from data_platform.models import Indicator

@api_view(['GET'])
def apiOverview(request):
    api_urls = {
        'Indicator List':'/indicator-list/',
        'Indicator Detail':'/indicator-detail/<str:pk>/',
    }
    return Response(api_urls)

@api_view(['GET'])
def indicatorList(request):
    indicators = Indicator.objects.all()
    serializer = IndicatorSerializer(indicators, many=True)
    #filterset_fields = ('id')
    #filter_backends = [DjangoFilterBackend]
    return Response(serializer.data)

@api_view(['GET'])
def indicatorDetail(request, pk):
    indicators = Indicator.objects.get(id=pk)
    serializer = IndicatorSerializer(indicators, many=False)
    return Response(serializer.data)

urls.py

代码语言:javascript
运行
AI代码解释
复制
from django.urls import include, path
from . import views

urlpatterns = [
    path('', views.apiOverview, name="api-overview"),
    path('indicator-list/', views.indicatorList, name="indicator-list"),
    path('indicator-detail/<str:pk>/', views.indicatorDetail, name="indicator-detail"),
]

serializers.py

代码语言:javascript
运行
AI代码解释
复制
from rest_framework import serializers
from data_platform.models import Indicator

class IndicatorSerializer(serializers.ModelSerializer):
    class Meta:
        model = Indicator
        fields = '__all__'
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-07-02 12:11:02

我想出来了!我不得不使用类视图而不是函数视图。

代码语言:javascript
运行
AI代码解释
复制
class indicatorList(generics.ListAPIView):
queryset = Indicator.objects.all()   
serializer_class = IndicatorSerializer
filter_backends = [django_filters.rest_framework.DjangoFilterBackend]
filter_fields = ('id',)

并在INSTALLED_APPS中添加'django_filters‘

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62702497

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档