微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用 Django 3.3 保存 JSON 数据

如何解决使用 Django 3.3 保存 JSON 数据

我们知道,Django=3 支持 JSONField 。 我正在尝试使用 JavaScript 在我的 Django 项目中保存 JSON 数据,我在 输入字段获取数据,如下所示:

[{"id":1,"Name":"Antenna","Pieces":"","Weight":"","Weight Types":"","Quantity":"12","Cargo Charge":"12","Customs Charge":"12"},{"id":2,"Name":"Soap","Pieces":"12","Weight":"12","Quantity":"","Customs Charge":"12"}]

从输入字段中,我使用 .

将数据保存到 MysqL 数据库
product_list = self.request.POST['product_list_json']

因此,product_list_json 是输入输出字段的名称。 但是保存的数据给出了不同的视图,保存的数据看起来像:

"[{\"id\":1,\"Name\":\"Antenna\",\"Pieces\":\"\",\"Weight\":\"\",\"Weight Types\":\"\",\"Quantity\":\"12\",\"Cargo Charge\":\"12\",\"Customs Charge\":\"12\"},{\"id\":2,\"Name\":\"Soap\",\"Pieces\":\"12\",\"Weight\":\"12\",\"Quantity\":\"\",\"Customs Charge\":\"12\"}]"

问题是,数据是通过额外的 " \ " 保存的。我该怎么做才能解决这个问题?

解决方法

Django 中的 Jsonfield,接受一个 dict 或一个列表并将它们转换为 JSON (str) 并将它们保存在 DB 中,只需从 request.POST 加载接收到的 JSON 并发送它就可以了。

,

简单的 CharField 可以为您工作。它可以像这样工作。

models.py

class subscription_info(models.Model):
     info=models.CharField(max_length=2000,null=True,blank=True)

views.py

from myApp.models import subscription_info as sInfo

def For_AJAX(request):
    if request.method=='POST':
        data=request.body.decode('utf-8')
        mymodel=sInfo()
        mymodel.info=data
        mymodel.save()
        return HttpResponse(status=201)
    else:
       return HttpResponse(status=204)

def For_Form(request):
        if request.method=='POST':
            data=request.POST.get('InputFieldName')          
            mymodel=sInfo()
            mymodel.info=data
            mymodel.save()
            return HttpResponse(status=201)
        else:
           return HttpResponse(status=204)

从数据库检索数据后,根据您的要求使用 json.loads()json.dumps()

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。