1

我的资源代码是

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 响应。实际上,我想知道在任何情况下如何指定tastepie 只发回JSON 响应?

我想得到像这样的 JSON 响应

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

有没有办法实现它?

4

2 回答 2

0

这是有效的 HTTP 响应。没有任何地方指定 JSON 401 响应,也没有必要让 sweetpie 提供任何默认响应。

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

更新:如何设置中间件

首先,通读中间件文档

然后,我认为您需要process_response在新的中间件类上实现方法,并根据其状态代码对响应做任何您需要做的事情。

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

于 2012-11-19T16:21:18.053 回答
0

或者你可以简单地在你的settings文件中做TASTYPIE_DEFAULT_FORMATS = ['json'].

于 2017-02-22T16:18:39.520 回答