我有一个奇怪的问题。我有一个视图,它从Django REST Framework通过序列化器和分页器返回一些JSON。
我的视图如下所示(返回“国家”模型中的所有对象):
@api_view(['GET'])
def country_list(request):
"""
List all countries
"""
if request.method == 'GET':
geoname_ids = request.QUERY_PARAMS.get('geoname_ids')
queryset = Countries.objects.all()
paginator = Paginator(queryset, request.QUERY_PARAMS.get('limit'))
page = request.QUERY_PARAMS.get('page')
try:
countries = paginator.page(page)
except PageNotAnInteger:
#If page is not an integer, deliver first page.
countries = paginator.page(1)
except EmptyPage:
#If page is out of range
#Delivery last page of results
countries = paginator.page(paginator.num_pages)
serializer_context = {'request': request}
serializer = PaginatedCountrySerializer(countries, context=serializer_context)
return Response(serializer.data)
这很好。
但是,我需要返回具有特定ID的国家/地区,我正在尝试这样做:
@api_view(['GET'])
def country_list(request):
"""
List all countries
"""
if request.method == 'GET':
geoname_ids = request.QUERY_PARAMS.get('geoname_ids')
queryset = Countries.objects.filter(country_geoname_id=geoname_ids)
paginator = Paginator(queryset, request.QUERY_PARAMS.get('limit'))
page = request.QUERY_PARAMS.get('page')
try:
countries = paginator.page(page)
except PageNotAnInteger:
#If page is not an integer, deliver first page.
countries = paginator.page(1)
except EmptyPage:
#If page is out of range
#Delivery last page of results
countries = paginator.page(paginator.num_pages)
serializer_context = {'request': request}
serializer = PaginatedCountrySerializer(countries, context=serializer_context)
return Response(serializer.data)
这显然是我用geonames_ids参数调用的URL。它给出一个错误:global name 'PageNotAnInteger' is not defined
然后引用异常。
我的代码有问题吗?在更改查询集之前,为什么PageNotAnInteger可以正常工作找不到意义。
您应该先导入它:
from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句