如何将模型类数据序列化为json

2024-10-01 11:37:29 发布

您现在位置:Python中文网/ 问答频道 /正文

我想向django应用程序添加一个视图,以便它显示来自表Barati的数据。在

视图.py

from django.http.response import Http404, HttpResponse
from django.template.response import TemplateResponse

from trello.models import Sveti, Barati


def get_index(request):
   return TemplateResponse(request,'index.html')

def get_settings(request):
    if not request.is_ajax():
       raise Http404
    svetebi = Sveti.objects.all()
    res = '['
    for sveti in svetebi:
        res = res + '{"name": ' + sveti.name + ', "position": ' + str(sveti.position) + ', "cards": null},'
    res = res[:-1]
    res = res + ']'
    return HttpResponse(res)

    def add_sveti(request):
    if not request.is_ajax():
        raise Http404
    sveti = Sveti()
    sveti.name = request.GET['name']
    sveti.position = request.GET['position']
    sveti.save()
    return HttpResponse('{"success":true}')

def add_barati(request):
    if not request.is_ajax():
       raise Http404
    barati = Barati()
    barati.text = request.GET['text']
    barati.position = request.GET['position']
    barati.sveti_id = request.GET['sveti_id']
    barati.save()
    return HttpResponse('{"success":true}')

模型.py

^{pr2}$

我想添加关于Barati class的信息(来自模型.py)json格式的res。但我不能再进一步了


Tags: djangonamefrompygetreturnrequestdef
3条回答

您正在手工构造JSON字符串,这是不寻常的,也是不必要的。我建议使用以下代码以JSON格式返回两个模型的所有实例:

import json

def get_settings(request):
    if not request.is_ajax():
       raise Http404
    sveti_all = list(Sveti.objects.all())
    barati_all = list(Barati.objects.all())
    return HttpResponse(serializers.serialize('json', sveti_all + barati_all))

根据这个django documanation==>;https://docs.djangoproject.com/en/1.6/topics/serialization/

#select all or use some filter, no matter
barati_json = serializers.serialize("json", Barati.objects.all()) 

并返回return_json。这就是全部。。在

//已编辑:使用dict合并json内容:

^{pr2}$

你做错了。Python附带了一个json module

import json

dat = Sveti.objects.values("name", "position")
json_data = json.dumps(dat)

Sveti.objects.values创建包含选定字段的数据字典列表,然后可以使用dumps将其序列化为json 或者如果要序列化所有值,可以使用django serializers

^{pr2}$

可以使用这些方法序列化所需的查询集。在

如果要将这些数据合并到可以使用的同一json数据中

json_data["sevni"] = serializers.serialize("json", Sveti.objects.all())
json_data["barati"] = serializers.serialize("json", Barati.objects.all())

>> print json_data

>> {"sveni": [{"id"............}, {.......}],
    "barati": [{"id"............}, {.......}] }

相关问题 更多 >