如果我在django视图中返回None并在中间件中处理它,会怎么样



我们总是在Django视图中返回HttpResponse,但现在我想在中间件中做这些打包工作。也就是说,我可以返回dict(或其他东西(或在视图中引发错误,我的中间件会检测到它:如果它返回一个dict(body(,中间件会像{error:None,code:0,body:bodydict}一样打包dict,并使用JSON.dumps获取一个字符串作为响应内容(例如代码0(;如果它引发错误,中间件将字符串化错误并将其打包为{error:"Some error",代码:500,body:[]}

如果视图返回None,中间件将打包为{error:None,code:0,body:None}

但问题是,django会检测到视图的返回。如果返回None,则会记录错误:

The view xxxView didn't return an HttpResponse object. It returned None instead.

现在我想删除此日志。我该怎么办?

I认为唯一可以(轻松(做到这一点的方法是使用装饰器,而不是中间件。get_response方法或传递到中间件中的任何方法都非常希望至少有一个可调用的render方法,而无需大量工作是不可避免的

def jsonify(fn):
def __inner(*args,**kwargs):
result = fn(*args,**kwargs)
return HTTPResponse(json.dumps({"data":result}))
@jsonify
def my_function(request,...):
return None

最新更新