2016-08-12 77 views
0

主要要求是將json對象從django視圖發送到名爲output.html(已存在於模板目錄中)的特定模板,作爲響應的一部分,。此外,json響應包含模型pk屬性,我想刪除它們並只發送字段 json屬性。Django:將JSON響應從視圖發送到特定模板

當我嘗試如下:

def view_personal_details (request): 
    personal_detail_json = personal_details.objects.all() 
    personal_detail = serializers.serialize('json', personal_detail_json) 
    return HttpResponse (serializers.serialize('json', personal_detail_json), content_type='application/json'); 

我得到JSON在新的一頁。

當我嘗試如下:

def view_personal_details (request): 
    personal_detail_json = personal_details.objects.all() 
    personal_detail = serializers.serialize('json', personal_detail_json) 
    return render (request, "webFiles/output.html", {'personal_detail': personal_detail}) 

我必須通過訪問數據{{personal_detail}}在我的HTML,而不是從響應。

此外,JSON迴應如下:

[ 
    { 
    model: "buglockerApp.personal_details", 
    pk: "001", 
    fields: { 
     name: "Rajiv Gupta", 
     email: "[email protected]", 
     doj: "2016-06-22", 
     dob: "2016-06-22", 
     address: "Bangalore", 
     contact: "9909999999" 
    } 
    } 
] 

我不希望模式PK發送作爲響應做。只有字段應作爲對webFiles/output.html文件的響應的一部分發送。

在此先感謝!

回答

0

你可以在python2.7以下

import json 
from django.http import JsonResponse 

def view_personal_details (request): 
    personal_detail = serializers.serialize('json', personal_details.objects.all()) 
    output = [d['fields'] for d in json.loads(personal_detail)] 
    # return render (request, "webFiles/output.html", {'personal_detail': output}) 
    # for ajax response 
    return JsonResponse({'personal_detail': output}) 

,或者你可以閱讀更多的澄清
以下https://docs.djangoproject.com/en/1.10/topics/serialization/#serialization-of-natural-keys
https://github.com/django/django/blob/master/django/core/serializers/base.py#L53

+0

它給我的錯誤「字符串索引必須是整數」 –

+0

此外,請建議我的問題的其他部分,即發送json響應到一個特定的頁面,因爲HttpResponse發送到一個全新的頁面。 –

+0

它工作。現在沒有模型和pk元素。 響應部分怎麼樣?我們如何將json作爲http響應的一部分發送到特定頁面? –

0

默認序列化程序始終添加模型和pk,以便可以將數據反序列化回對象。您可以編寫自定義序列化器,也可以簡單地刪除不需要的數據。

personal_details = [pd['fields'] for pd in personal_details] 

這應該給你的類型的字典與個人資料

一個新的列表
+0

它給我的錯誤「字符串索引必須是整數」 –

+0

另外,請將問題的其他部分建議給我,例如將Http響應發送到一個全新的頁面,即將json響應發送到特定頁面。 –

+0

看起來像Anjaneyulu已經回答了所有這些:)但如果我不得不回答,它應該是一樣的 –

相關問題