我正在尝试通过此链接进行分页和阅读。
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)
设置.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',)
}
请您参考如下方法:
您的设置文件不包含 DEFAULT_PAGINATION_CLASS 的定义,它确实包含 REST_FRAMEWORK 的定义,并且 DEFAULT_PAGINATION_CLASS 是其中的一部分.
来自 Django Rest Framework有关访问的文档 settings
Accessing settings
If you need to access the values of REST framework's API settings in your project, you should use the api_settings object. For example.
from rest_framework.settings import api_settings
print api_settings.DEFAULT_AUTHENTICATION_CLASSESThe api_settings object will check for any user-defined settings, and otherwise fall back to the default values. Any setting that uses string import paths to refer to a class will automatically import and return the referenced class, instead of the string literal.
您应该能够访问 api_settings.DEFAULT_PAGINATION_CLASS
