python - Django Rest Framework - URL 查询不起作用?
问题描述
我正在用 Django 编写一个使用 Django Rest 框架的应用程序。对 API URL 的 GET 请求有效,但是当我向它添加查询时,例如 '?id=1845' 它实际上并没有执行查询,它仍然返回完整的结果列表。
在下面的代码中,我试图查询“指标列表”
视图.py
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)
网址.py
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"),
]
序列化程序.py
from rest_framework import serializers
from data_platform.models import Indicator
class IndicatorSerializer(serializers.ModelSerializer):
class Meta:
model = Indicator
fields = '__all__'
解决方案
我想到了!我不得不使用类视图而不是函数视图
class indicatorList(generics.ListAPIView):
queryset = Indicator.objects.all()
serializer_class = IndicatorSerializer
filter_backends = [django_filters.rest_framework.DjangoFilterBackend]
filter_fields = ('id',)
并将“django_filters”添加到 INSTALLED_APPS
推荐阅读
- angular - Angular - 如何从垫表中获取选定的单元格值
- hadoop - 如何在不删除数据的情况下更改分区外部 Hive 表(镶木地板)上列的数据类型?
- jquery - jQuery.Deferred 异常:chart.axisX 未定义
- python - Python - 重命名特定文件
- mysql - Mysql从数组中选择元素
- c - 使用函数 fclose 损坏的大小与 prev_size 中止(“核心”generado)
- css - 如何为 Angular 中的特定打字稿组件应用 font-sze:62.5%
- javascript - 使用 WebView evaluateJavascript 未按预期工作
- python-3.x - 获取列表中元素的维度或嵌套级别
- python - 将一个json文件数据连接到mysql数据库(空表)