【发布时间】:2018-09-04 19:56:08
【问题描述】:
我有以下设置:
我想列出特定年份的所有假期。这就是为什么我省略了默认列表视图并像这样实现我自己的:
class HolidayViewSet(mixins.RetrieveModelMixin, GenericViewSet):
@list_route()
def year(self, request, year=get_today().year):
public_holidays = self.get_queryset().filter(date__year=year)
page = self.paginate_queryset(public_holidays)
if page is not None:
serializer = self.get_serializer(page, many=True)
return self.get_paginated_response(serializer.data)
serializer = self.get_serializer(public_holidays, many=True)
return Response(serializer.data)
如果我使用默认的 /holiday/year/ 我会得到当前年份的结果。
但是当我尝试传递参数时,我会得到一个 404。404 页面(在调试模式下)甚至显示了正确的 URL 模式:
api/v1/ ^holiday/year/$ [name='holiday-year']
api/v1/ ^holiday/year\.(?P<format>[a-z0-9]+)/?$ [name='holiday-year']
在documentation 中很遗憾没有涵盖这一方面。
任何想法为什么我到holiday/year/2017 的路线不起作用?
谢谢! 罗恩
【问题讨论】:
-
谢谢,但这似乎不是一个干净的解决方案。
-
您使用的是真正过时的 DRF 文档版本。你的 Django REST 框架是什么版本的?这部分解释了 url 是如何构建的:django-rest-framework.org/api-guide/routers/#simplerouter
-
感谢您的意见。但是django告诉我已经有一条路线了。我想使用它而不用创建单独的路线。
标签: django django-rest-framework