我正在使用Django REST框架创建一个支持JSON和CSV输出的API。你知道吗
我的urls.py
中有这样一行:
url(r'^api/events/$', views.EventsView.as_view(), name='events'),
事件视图如下所示:
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,并且我会看到“Here”被记录到我的日志文件。你知道吗
如果我访问/api/events/?format=csv
,我会得到一个404响应,JSON主体是
{
"detail": "Not found."
}
…而且没有任何记录。你知道吗
缺少日志记录让我很沮丧。这就好像它连EventsView类都没有,但是在URL中更改querystring值怎么能阻止它被路由到那个类呢?我怎么知道它被传送到哪里?你知道吗
编辑:的内容EventsQuery.get\u响应()是:
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
)
我仍然不清楚根本原因,但我已经解决了这个问题,使用format\u suffix\u模式来传递format参数,而不是将其作为querystring参数传递。我确认了-通过覆盖APIView.handle\u异常()-父类引发了404异常,但我不知道为什么。你知道吗
相关问题 更多 >
编程相关推荐