我的模特:
class Person(models.Model):
first_name = models.CharField(max_length=30)
last_name = models.CharField(max_length=30)
phone = models.CharField(max_length=20)
email = models.EmailField()
我的观点:
def users(request):
people = Person.objects.all()
data = serializers.serialize('json', people)
return JsonResponse(data, safe=False)
我想要的只是JSON格式的数据。我得到的回报是:
"[{\"model\": \"myapp.person\", \"pk\": 1, \"fields\": {\"first_name\": \"ahmet\", \"last_name\": \"arsan\", \"phone\": \"xxx-xxx-xxxx\", \"email\": \"aarsan@xxxxxxxx.com\"}}]"
虽然从技术上说这是有效的JSON,但对于这个响应有2个问题(对我而言):
我不知道我做错了什么/我做错了什么,但似乎有些事情在这里。也许我的问题应该是返回一个字典,但我不知道怎么做才能做到这一点。我使用的是Django 1.10.1,Python 3.4。
答案 0 :(得分:1)
你已经有了答案,但你做错了是双重编码。 JsonResponse序列化为json,但你已经拥有json作为从序列化器返回的内容。
序列化为" python"或使用标准的HttpResponse。
答案 1 :(得分:0)
我假设您要求此问题进行API响应。我建议使用Rest Framework,因为它使事情变得非常简单。您可以通过为模型编写自己的序列化程序来选择自己的字段。
from rest_framework import serializers
class PersonSerializer(serializers.ModelSerializer):
class Meta:
model = Person
fields = ('first_name', 'last_name', 'phone', 'email')