我有下面的代碼發送ID到我的Django視圖,並從服務器獲取幾個JSON對象,這是工作,但我不能在模板中使用響應對象,即JSON對象,但只有一個對象與上下文名稱只在我的http服務成功功能。如何在django視圖中使用HttpResponse時訪問模板中的json對象?
這裏是視圖代碼 -
def preview(request):
if request.method == "POST":
response_data = {}
try:
data=json.loads(request.body.decode())
v_pid=data["id"]
basic_v_obj = tsbasicinfo.objects.get(emailid = request.session.get('emailid'))
if tswex.objects.filter(pid = v_pid).exists():
wc_v_obj = tswex.objects.filter(pid=v_pid)
wc_v_qs = tswex.objects.filter(pid=v_pid)
wc_v_json_list = [obj.as_dict() for obj in wc_v_qs]
else:
wc_v_obj =''
wc_v_json_list=''
context = {
'js': basic_v_obj,
'jjs':wc_v_obj,
}
context['wc_V_json'] = mark_safe(json.dumps(wc_v_json_list, ensure_ascii=False))
except:
context = {'status': "nodata"}
return HttpResponse(context, content_type="application/json")
下面是使用AngularJS HTTP服務功能:
$scope.preview_ang = function (clicked_id) {
$http({
method: 'POST',
url: 'pvcan',
data: {
'id': clicked_id
},
headers: { 'Content-Type': 'application/x-www-form-urlencoded' }
})
.success(function (data) {
if (data == "null") {
alert('server returned nothing but success');
} else {
alert(JSON.stringify(data,null,2));
jdata = data['wc_V_json'];
alert('First Sk: '+JSON.stringify(jdata)); // displays unknown.. as data is just a string object containing context names :(
}
})
.error(function (data, status, headers, config) {
alert('server returned error :'+status);
})
}
當我把斷點視圖在返回HttpResponse對象,我可以看到具有期望的數據的對象,但是我不確定如何在javascript內部模板中使用它。
當我使用的方法選擇render_to_response,我可以使用響應上下文例如下面 -
jdata_wc = {{ wc_V_json|safe }};
我如何用同樣的方法在我的模板,當我回到使用HttpResponse對象視圖中的數據?
非常感謝Daniel! – Sathish