HttpRequestを特定のビュー関数にルーティングするurls.pyがあります。これらのビュー関数はすべて、ディクショナリオブジェクトを返します。これらすべての戻りオブジェクトを、JsonにダンプしてHttpResponseでラップする関数に渡すにはどうすればよいですか?
ありがとう
HttpRequestを特定のビュー関数にルーティングするurls.pyがあります。これらのビュー関数はすべて、ディクショナリオブジェクトを返します。これらすべての戻りオブジェクトを、JsonにダンプしてHttpResponseでラップする関数に渡すにはどうすればよいですか?
ありがとう
おそらくrender_decoratorが必要です。使用法:
@render('index.html', ('json',))
def my_view(request)
#do something
return {'key': 'value'}
または、このスニペットは、辞書を返し、JSON ビューを取得する関数で使用されます。
サブクラス化は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')
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
が利用可能であることも発見しました