gpt4 book ai didi

python - Django 全局名称 'PageNotAnInteger' 未定义

转载 作者:太空宇宙 更新时间:2023-11-03 12:40:07 24 4
gpt4 key购买 nike

我有一个奇怪的问题。我有一个 View 通过 Django REST Framework 的序列化器和分页器返回一些 JSON。

我的 View 看起来像这样(返回 Countries 模型中的所有对象):

@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

关于python - Django 全局名称 'PageNotAnInteger' 未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19936801/

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