0

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

谢谢

4

3 回答 3

3

也许你想要一个render_decorator 。用法:

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

或者这个片段,它用于返回字典以获取 JSON 视图的函数。

于 2012-08-27T09:35:32.217 回答
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')
于 2012-08-27T21:14:51.070 回答
0

使用Django 中间件来处理您的响应对象。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中发现了这个

于 2012-08-27T14:36:01.053 回答