Skip to main content
 首页 » 编程设计

python之下一个,上一个,计数的 Django 分页

2024年10月24日27mengfanrong

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

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_CLASSES

The 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