主要要求是将django视图中的json对象发送到名为output.html的特定模板(已存在于templates目录中),作为响应的一部分。此外,json响应包含模型和 pk 属性,我想删除它们并仅发送字段 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})
我必须通过html中的 {{personal_detail}} 访问数据,而不是来自回复。
此外,json响应如下:
[
{
model: "buglockerApp.personal_details",
pk: "001",
fields: {
name: "Rajiv Gupta",
email: "rajiv@247-inc.com",
doj: "2016-06-22",
dob: "2016-06-22",
address: "Bangalore",
contact: "9909999999"
}
}
]
我不希望将模型和 pk 作为响应发送。只应将字段作为对webFiles / output.html文件的响应的一部分发送。
提前致谢!!
答案 0 :(得分:0)
默认序列化程序始终添加模型和pk,以便可以将数据反序列化为对象。您可以编写自定义序列化程序,也可以只删除不需要的数据。
personal_details = [pd['fields'] for pd in personal_details]
这应该会为您提供一份包含个人详细信息的新词典列表
答案 1 :(得分: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