2017-09-22 95 views
0

我制作了一个新的API应用程序来为我的Web应用程序提供所有API请求。所以我想先做一些简单的事情,然后以JSON的形式返回一个DataFrame对象。我也使用Django Rest框架库。Django Restful API应用程序

urls.py

from django.conf.urls import url, include 
from rest_framework import routers 
from api import views 

router = routers.SimpleRouter() 
router.register(r'test', views.UserViewSet) 

urlpatterns = [ 
    url(r'^', include(router.urls)) 
] 

我views.py:

class UserViewSet(APIView): 
    renderer_classes = (JSONRenderer,) 

    def get(self): 
     queryset = NAV.objects.filter(fund__account_class=0, transmission=3).values('valuation_period_end_date').annotate(
     total_nav=Sum(F('outstanding_shares_par') * F('nav'))).order_by('valuation_period_end_date') 
     df = read_frame(queryset, coerce_float=True) 
     df.loc[:, 'valuation_period_end_date'] = pd.to_datetime(df.valuation_period_end_date) 
     df.loc[:, 'timestamp'] = df.valuation_period_end_date.astype(np.int64) // 10 ** 6 
     df.loc[:, 'total_nav'] = df.total_nav 
     return JsonResponse(df) 

但我得到的错误AssertionError: BASE_NAME argument not specified, and could not automatically determine the name from the viewset, as it does not have a .queryset attribute.我是新来的Django RESTful的API框架,并想知道如果我这样做对吗?

回答

0

看起来您需要在路由器上注册视图时指定基本名称。试试这个(修改'User'喜欢的东西要查询的模型的名称:

router.register(r'test', views.UserViewSet, 'User') 

欲了解更多信息关于这个在这里看到: http://www.django-rest-framework.org/api-guide/routers/