【问题标题】:Django pagination with next, previous, countDjango分页与下一个,上一个,计数
【发布时间】:2016-06-02 04:48:58
【问题描述】:

我正在尝试通过此链接进行分页和阅读。

Pagination in Django-Rest-Framework using API-View

我需要下一个,上一个 url 用于分页。问题是当我调用这个时,

pagination_class = settings.DEFAULT_PAGINATION_CLASS

它说

“设置”对象没有属性“DEFAULT_PAGINATION_CLASS”

我需要导入什么?还是安装?

模型.py

class CarView(APIView):
permission_classes = ()

def get(self, request):
    """ Get all car """
    car = Car.objects.all()
    # paginator = PageNumberPagination()

    serializer = CarSerializer(car)
    serialized_car = CarSerializer(car, context={"request": request})
    # serializer = CarSerializer(car[0])
    return Response(serialized_car.data)

序列化器.py

class CarSerializer(serializers.ModelSerializer):

photo_url = serializers.SerializerMethodField('get_photo_url')

class Meta:
    model = Car
    fields = ('id','name','price', 'photo_url') 

def get_photo_url(self, car):
    request = self.context.get('request')
    photo_url = car.photo.url
    return request.build_absolute_uri(photo_url)

settings.py

REST_FRAMEWORK = {

'DEFAULT_PAGINATION_CLASS': 'rest_framework.pagination.PageNumberPagination',
'PAGE_SIZE': 100,

'DEFAULT_AUTHENTICATION_CLASSES':
    ('rest_framework.authentication.OAuth2Authentication',
     'rest_framework.authentication.SessionAuthentication'),

'DEFAULT_MODEL_SERIALIZER_CLASS':
    'rest_framework.serializers.ModelSerializer',

'DEFAULT_PERMISSION_CLASSES':
('rest_framework.permissions.IsAdminUser',)

}

【问题讨论】:

    标签: python django pagination


    【解决方案1】:

    您的设置文件不包含DEFAULT_PAGINATION_CLASS 的定义,它包含REST_FRAMEWORK 的定义,而DEFAULT_PAGINATION_CLASS 是其中的一部分。

    来自Django Rest Framework关于访问settings的文档

    访问设置

    如果您需要访问 REST 的值 在你的项目中框架的 API 设置,你应该使用 api_settings 对象。例如。

    from rest_framework.settings import api_settings
    print api_settings.DEFAULT_AUTHENTICATION_CLASSES

    api_settings 对象将检查任何用户定义的设置,并且 否则跌倒 恢复默认值。使用字符串导入路径的任何设置 引用一个类会自动导入并返回 引用的类,而不是字符串文字。

    你应该可以访问api_settings.DEFAULT_PAGINATION_CLASS

    【讨论】:

    • 你的意思是我会像 pagination_class= api_settings.DEFAULT_PAGINATION_CLASS 一样改变吗?我现在得到了这个错误。无效的 API 设置:“DEFAULT_PAGINATION_CLASS”
    • @KhantThuLinn 你是否像上面的例子一样导入了api_settings
    • 你的意思是在settings.py中导入?把这个写在里面?从 rest_framework.settings 导入 api_settings
    • 不在 settings.py 中,您使用 DEFAULT_PAGINATION_CLASS。您应该使用导入语句from rest_framework.settings import api_settings
    • 嗯,还是不行。我已经导入了它并写了 pagination_class= api_settings.DEFAULT_PAGINATION_CLASS。我收到类似无效 API 设置的错误:'DEFAULT_PAGINATION_CLASS
    猜你喜欢
    • 2011-02-19
    • 1970-01-01
    • 2017-08-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-23
    • 2015-02-12
    • 2017-09-15
    相关资源
    最近更新 更多