Django python - 如何通过函数放置所有HttpResponses

时间:2012-08-27 09:32:22

标签: python django httpresponse http-request

我有urls.py将HttpRequest路由到特定的视图函数。这些视图函数都返回一个字典对象。如何通过转储到Json并包装在HttpResponse中的函数传递所有这些返回对象?

由于

3 个答案:

答案 0 :(得分:3)

也许你想要render_decorator。 用法:

@render('index.html', ('json',))
def my_view(request)
    #do something
    return {'key': 'value'}

或者这个snippet,用于返回dict以获取JSON视图的函数。

答案 1 :(得分:0)

使用Django Middleware处理您的回复对象。在自定义中间件中实现process_response方法。使用视图创建的字典并将其转换为您想要的json。然后将它传递给下面的函数,这将确保收到的实际响应是json。

def render_json_response(data):
    """Sends an HttpResponse with the X-JSON header and the right mimetype."""
    resp = HttpResponse(data, mimetype=("application/json;"))
    resp['X-JSON'] = data
    return resp

还在Django Annoying项目

中发现了这个ajax_request decorator - returns JsonResponse with dict as content

答案 2 :(得分:0)

如何对HttpResponse进行子类化?我在视图中使用它来返回json:

import simplejson
from django.http import HttpResponse

class JsonResponse(HttpResponse):
    def __init__(self, data):
        super(JsonResponse, self).__init__(
            content=simplejson.dumps(data),
            mimetype='application/json; charset=utf8')