0

我有几种使用djangular远程方法调用的方法。

目前,当其中一个失败时,我只返回一个带有错误属性的 dict/json,如果我的应用程序在 JavaScript 端检查该属性。

@allow_remote_invocation
def do_a_thing(self):
    return {'error':'oops', 'description':'the thing broke'}

这很好,但有时该方法会超出 Python 的控制范围,我需要在 JavaScript 端使用 error_callback。

我最终复制了错误处理,这让我在晚上哭了。

function call_the_thing(){
    djangoRMI.do_a_thing().then(function(data){
        if(data.error){
            handleError(data.error)
        }else{
            ....
        }
    },function(rejectReason){
        handleError(rejectReason)
    }
} 

我那天的想法是,必须有一种从 python 端返回和出错的方法,而不仅仅是错误数据的成功。

我希望我可以用 python dict 包装在 a 中,HttpResponseServerError但我无法理解如何做更多的事情,而不是返回更多的字符串,也无法理解如何使用 Djangular 来实现。

这是返回服务器错误(as HttpResponseServerError)的正确方法吗?还是因为djangular我需要把它当成一个民族来对待啊我一直在做什么?

nb 我还不能在工作上花费/浪费时间。当我这样做时,如果这里没有一个像样的答案,我会自我回答。但我也对什么是好的做法感兴趣,添加返回 JSON 感觉就像 hack。

4

1 回答 1

0

JSON响应异常

它像普通的 django 异常一样被抛出,但消息 kwarg 可以采用 JSON 内容。它默认响应状态为 400,但可以使用另一个 kwarg 设置。

所以现在你可以写:

@allow_remote_invocation
def do_a_thing(self):
    if not thing.do():
        return thing.do()
    message = {'error':'oops', 'description':'the thing broke'}
    status = 500
    raise JSONResponseException(message=message,status=status)
于 2016-01-31T10:17:45.603 回答