如何指定tastypie总是返回json数据

时间:2012-11-19 15:44:27

标签: django tastypie

我的资源代码是

class MessageResource(ModelResource):
    class Meta:
        queryset = Message.objects.all()
        resource_name = "message"
        always_return_data = True
        authentication = ApiKeyAuthentication()
        authorization = Authorization()
    def determine_format(self, request):
        return "application/json"

如果我收到没有任何身份验证信息的消息资源,则响应为

401 UNAUTHORIZED
"Content-Type" = "text/html; charset=utf-8";
Date = "Mon, 19 Nov 2012 15:36:28 GMT";
Server = "WSGIServer/0.1 Python/2.7.2";

而不是html,我想获得JSON响应。实际上,我想知道如何指定tastypie只在任何情况下发回JSON响应?

我想获得像

这样的JSON响应

{ "code": "401", "message": "Unauthorized" }

有没有办法实现它?

2 个答案:

答案 0 :(得分:0)

这是有效的HTTP响应。没有指定任何JSON 401响应,并且不需要tastypie来提供任何默认响应。

如果您有这样的需求,只需使用适当的中间件包装您的API。

更新:如何设置中间件

Fisrt,请仔细阅读middleware documentation

然后,我认为您需要在新的中间件类上实现process_response方法,并根据其status code执行响应所需的任何操作。

不要忘记将中间件类添加到settings.MIDDLEWARE_CLASSES

答案 1 :(得分:0)

或者您可以在settings文件中执行TASTYPIE_DEFAULT_FORMATS = ['json']