JSON作为Unicode添加到数据库

2024-10-17 06:17:39 发布

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

我试图将JSON请求保存为数据库中的字符串,但遇到了一些问题:由于某些原因,我的数据将作为Unicode字符串保存到数据库中。我的意思是字符串在数据库中的保存方式如下:

[{u'content': u'Treehouse', u'name': u'opportunity_name'}, {u'content': u'Robert', u'name': u'user_firstname'}, {u'content': u'Warren', u'name': u'client_firstname'}, {u'content': u'Buffett', u'name': u'client_lastname'}, {u'content': u'Form ABC123', u'name': u'my_name'}]

当他们应该是这样(没有美国的):

[{'content': 'Treehouse', 'name': 'opportunity_name'}, {'content': 'Robert'...

这是我的密码视图.py(其中的数据也可以以unicode格式打印):

@csrf_exempt
def send_aggregate_list(request):
    if request.method == 'POST':
        data = json.loads(request.body)
        print 'data'
        # the output from this print statement is the same, with leading 'u's
        print data
        serializer = SendAggregateSerializer(data=data)
        if serializer.is_valid():
            serializer.save()
            return JSONResponse(data,status=201)

你知道吗型号.py地址:

class SendAggregate(models.Model):
    created = models.DateTimeField(auto_now_add=True)
    is_sent = models.BooleanField(default=False)
    global_merge_vars = models.TextField()
    subject_merge_vars = models.TextField()
    to_email = models.CharField(max_length=256, blank=False)
    to_name = models.CharField(max_length=256, blank=False)
    template = models.ForeignKey(Template, on_delete=models.CASCADE, null=True, blank=True)

    def __str__(self):
        return str(self.pk)

你知道吗序列化程序.py地址:

class SendAggregateSerializer(serializers.ModelSerializer):
    class Meta:
        model = SendAggregate
        fields = ('id', 'created', 'is_sent', 'to_email', 'to_name', 'global_merge_vars', 'subject_merge_vars', 'template')

如果有用的话,这里是serializer.validated_data的输出:

OrderedDict([(u'to_email', u'rob.grzesik@gmail.com'), (u'to_name', u'Recipient Name'), (u'global_merge_vars', u"[{u'content': u'Treehouse', u'name': u'opportunity_name'}, {u'content': u'Robert', u'name': u'user_firstname'}, {u'content': u'Warren', u'name': u'client_firstname'}, {u'content': u'Buffett', u'name': u'client_lastname'}, {u'content': u'Form ABC123', u'name': u'loan_task_subject'}]"), (u'subject_merge_vars', u'[]'), (u'template', <Template: my_name>)])

Tags: to字符串nameclient数据库dataismodels