Skip to content

PageNumberPagination.get_page_number returns 1 when page_query_param == 0  #9533

@dishn

Description

@dishn

version 3.15.2
python 3.10.14

Not sure if this is expected behavior, but when page_query_param == 0, the page_number variable sets to 1 in get_page_number:

    def get_page_number(self, request, paginator):
        page_number = request.query_params.get(self.page_query_param) or 1
        if page_number in self.last_page_strings:
            page_number = paginator.num_pages
        return page_number

where:

>>> page_number = request.query_params.get(self.page_query_param) or 1
>>> page_number = 0 or 1
>>> page_number = 1

I believe the original intention is to check empty string not value 0: #8578

I would consider the get_page_number function to allow value 0:

    def get_page_number(self, request, paginator):
        """
        Overrides the get_page_number method to handle case where page=0
        """
        param_numer = request.query_params.get(self.page_query_param)
        return 0 if param_numer == 0 else super().get_page_number(request, paginator)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions