0
JSONリクエストをデータベースに文字列として保存しようとしましたが、何らかの問題が発生しました。何らかの理由で、データがUnicode文字列としてデータベースに保存されています。私はこれの意味することは、文字列は、データベース内でこのように保存されていることをされています。ここでのビューで、私のコードですJSONがユニコードとしてデータベースに追加されました
[{'content': 'Treehouse', 'name': 'opportunity_name'}, {'content': 'Robert'...
:彼らは(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'my_name'}]
。 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)
はmodels.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)
serializers.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'[email protected]'), (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>)])
jsonをデータベースに保存するコードを追加してください。 – spectras
JSON文字列を明示的にロードするのはなぜですか?これがシリアライザの機能です。 –
JSONはユニコードですが、djangoとデータベースで問題ありません。以下は[django docs](https://docs.djangoproject.com/ja/1.10/ref/unicode/)です。 – tdelaney