在视图.py在
from rest_framework import viewsets
from rest_framework.response import Response
from rest_framework import generics
from ticker.serializers import PriceSerializer
from ticker.models import Price
import datetime
from nexchange.settings import DEFAULT_HOUR_RANGE
class LastPricesViewSet(viewsets.ViewSet):
def list(self, request):
queryset = Price.objects.filter().order_by('-id')[:2]
serializer = PriceSerializer(queryset, many=True)
return Response(serializer.data)
class PriceHistoryViewSet(generics.ListAPIView):
serializer_class = PriceSerializer
def get_queryset(self, request):
hours = self.request.query_params.get('hours', DEFAULT_HOUR_RANGE)
relevant = datetime.datetime.now() - datetime.timedelta(seconds=hours * 3600)
queryset = Price.objects.filter(created_on__gte=relevant).order_by('id')
return queryset
在网址.py公司名称:
^{pr2}$在runserver
(不带basename kwarg)期间引发以下错误:
AssertionError:
基名称argument not specified, and could not automatically determine the name from the viewset, as it does not have a
.querysetattribute.
但是,当我添加希望的basename
时,错误变为:
TypeError: as_view() takes 1 positional argument but 2 were given
我怀疑这可能与在一个路由器中组合ViewSet和ListAPIView有关。在
解决方案: 必须从
viewsets.ViewSetMixin
继承来实现ViewSetClass向DRF路由器注册所需的方法,否则可以使用简单的Djangourlconf
表示法。在views.py:
^{pr2}$urls.py:
相关问题 更多 >
编程相关推荐