【发布时间】:2018-03-01 15:46:14
【问题描述】:
我正在使用 Django REST 框架来创建一个支持 JSON 和 CSV 输出的 API。
我的urls.py 中有这一行:
url(r'^api/events/$', views.EventsView.as_view(), name='events'),
EventsView 看起来像这样:
class EventsView(APIView):
def dispatch(self, request, *args, **kwargs):
return super(EventsView, self).dispatch(request, *args, **kwargs)
def get(self, request):
logger.info("Here")
events = EventsQuery(request)
if events.is_valid():
events.build_response()
return events.get_response()
如果我访问 /api/events/?format=json,我会得到一组有效的 JSON 结果,我会看到“这里”记录到我的日志文件中。
如果我访问/api/events/?format=csv,我会收到一个带有 JSON 正文的 404 响应
{
"detail": "Not found."
}
...并且没有任何记录。
缺乏日志记录让我很头疼。就好像它甚至没有进入 EventsView 类,但是更改 URL 中的查询字符串值如何阻止它被路由到该类?以及如何找出它被路由到的位置?
编辑:EventsQuery.get_response() 的内容是:
def get_response(self):
if self.has_error:
self.response = {
'success': self.success,
'errors': self.errors
}
resp_status = status.HTTP_400_BAD_REQUEST
else:
resp_status = status.HTTP_200_OK
return Response(
self.response, status=resp_status, content_type=self.content_type
)
【问题讨论】:
-
您是否注意到控制台中的错误?
-
除了 404 记录之外,没有。
-
EventsQuery是什么,get_response()返回什么?一个 sn-p 会很好 -
点击here查看类似问题和有效答案
-
您为支持 CSV 做了哪些工作?您使用的是特定库吗?
标签: python json django rest csv