Django与next,previous,count分页

时间:2016-02-20 15:25:23

标签: python django pagination

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

Pagination in Django-Rest-Framework using API-View

我需要有下一个,之前的分页网址。问题是,当我打电话给这个时,

pagination_class = settings.DEFAULT_PAGINATION_CLASS

它说

'设置'对象没有属性'DEFAULT_PAGINATION_CLASS'

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

Models.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)

Serializers.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',)

}

1 个答案:

答案 0 :(得分:2)

您的设置文件不包含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