如何解决使用 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 举报,一经查实,本站将立刻删除。