DjangoRestFramework:全局设置Django中的分页类设置.py

2024-06-26 14:25:14 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试对所有api调用进行默认分页:

http://www.django-rest-framework.org/api-guide/pagination/#modifying-the-pagination-style

现在我想让我的CustomPagination在全球范围内工作:

class CustomPagination(PageNumberPagination):
    """
    自定义分页器
    """
    page_size = 10
    page_size_query_param = 'page_size'
    max_page_size = 1000

我希望将类注册到settings.py

^{pr2}$

不过,它还是引发了一个错误:

ImportError: Could not import 'football.views.CustomPagination' for API setting 'DEFAULT_PAGINATION_CLASS'. AttributeError: module 'football.views' has no attribute 'CustomPagination'.

我该怎么解决呢?在


Tags: djangoorgrestapihttpsizewwwpage
1条回答
网友
1楼 · 发布于 2024-06-26 14:25:14

我遇到了同样的问题,最后我发现是因为模块views.py没有正确加载,因为我没有通过manage.py startapp创建restapi文件夹,而且在project的setting.py文件的INSTALLED_APPS中没有该文件夹的项。
我把CustomPagination分页类移到了我的第一个应用程序的views.py,这个应用程序是由manage.py startapp创建的,然后它就工作了。在

若要调试,可以将以下行添加到rest_framework/settings.py source code中,如下所示:

module = import_module(module_path)  # Original code
if (setting_name == "DEFAULT_PAGINATION_CLASS"):  # Added code
    print(dir(module))  # Added code
return getattr(module, class_name)   # Original code

如果AttributeError引发,它应该类似于:(仅列表中的内置属性)

^{pr2}$

如果有效,CustomPagination应该列在列表中:

# ./manage.py runserver 0:8000
Performing system checks...

['some-other-classes', 'PageNumberPagination', 'CustomPagination', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', 'models', 'random', 'reverse', 'settings']
System check identified no issues (0 silenced).

相关问题 更多 >