2014-05-02 25 views
0

在Django我view.py是顯示JSON數據

import json  
from django.http import HttpResponse 
from django.template import Template, Context 
from django.shortcuts import render_to_response 

def ajax(request): 
    obj =[dict(a = 1,b = 2)] 
    jsons=json.dumps(obj) 
    print jsons 
    return render_to_response("2.html", {"obj_as_json": jsons}) 

我想顯示A和B是JSON在我的模板2.HTML的價值。請幫我寫代碼。

+0

你可以通過'obj'到模板,並告訴他們爲'{{obj.a}} ' – Rohan

回答

1

我不明白視圖的用法。

爲什麼要在模板呈現時傳遞JSON對象作爲上下文值?

標準是當執行一個Ajax請求其響應應該是一個JSON響應即MIMETYPE =應用/ JSON

因此,您應該正常渲染模板並將結果轉換爲JSON並返回。 e.g:

def ajax(request): 
    obj = { 
     'response': render_to_string("2.html", {"a": 1, "b": 2}) 
    } 
    return HttpResponse(json.dumps(obj), mimetype='application/json') 

OR

你可以創建一個JSONResponse類的HttpResponse類似使它通用。例如

class JSONResponse(HttpResponse): 
    """ 
     JSON response 
    """ 
    def __init__(self, content, mimetype='application/json', status=None, content_type=None): 
     super(JSONResponse, self).__init__(
      content=json.dumps(content), 
      mimetype=mimetype, 
      status=status, 
      content_type=content_type, 
     ) 

和使用,如:return JSONResponse(obj)

這已經默認在Django 1.7增加:https://docs.djangoproject.com/en/1.7/ref/request-response/#jsonresponse-objects