//检视
class TodoList(APIView):
def get(self,request,page=None, format=None):
todos = []
if page is not None:
todos = TodoListServices.list_todo_paginate(page)
else:
todos = TodoListServices.list_todo_paginate(1)
serializer = TodoSerializer(todos, many=True, context={'request': request})
return Response(serializer.data, status=status.HTTP_200_OK)
字符串
//服务
class TodoListServices:
@staticmethod
def list_todo_paginate(page):
page_number = page
page_size = 10
if page_number is None:
page_number = 1
todos = todo.objects.all()[
(page_number - 1) * page_size: page_number * page_size
]
return todos
型
我得到一个TypeError:缺少1个必需的位置参数我该如何解决这个问题?
1条答案
按热度按时间w3nuxt5m1#
我解决了。结果我需要
设置page = 1为默认值
字符串
使用default参数(page=1)的list_todo_paginate版本不会导致问题的原因是它为page参数提供了一个默认值。当您在没有显式传递page参数的情况下调用此方法时,它会自动采用默认值1。
相比之下,没有默认参数的list_todo_paginate的第二个版本要求你显式地为page参数传递一个值。如果你在调用该方法时没有提供这个值,Python将引发“missing 1 required positioning argument”错误,因为它希望你为page提供一个值。