Python 如何将数据库中的所有数据作为Json返回?
如何将数据库中的所有数据作为Json返回? Models.py:Python 如何将数据库中的所有数据作为Json返回?,python,json,django,database,rest,Python,Json,Django,Database,Rest,如何将数据库中的所有数据作为Json返回? Models.py: class Hero(models.Model): Hero_id = models.IntegerField(auto_created=True, primary_key=True, serialize=False, verbose_name='Hero_id') race = models.CharField(max_length=50, blank=True) age = models.Integer
class Hero(models.Model):
Hero_id = models.IntegerField(auto_created=True, primary_key=True, serialize=False, verbose_name='Hero_id')
race = models.CharField(max_length=50, blank=True)
age = models.IntegerField(blank=True)
class_= models.CharField(max_length=50, blank=True)
Views.py:
class HeroSerializer(serializers.ModelSerializer):
class Meta:
model = Hero
fields = ['Hero_id', 'race', 'age', 'class_']
extra_kwargs = {
'race': {
'required': False,
'allow_null':True
},
'age': {
'required': False,
'allow_null':True
},
'class_': {
'required': False,
'allow_null':True
}
}
def HHH():
h=Hero.objects.all()
serializer= HeroSerializer(h)
return JsonResponse(serializer.data)
但它返回了一个错误:
尝试获取序列化程序HeroSerializer上的字段Hero_id的值时获取AttributeError。序列化程序字段的名称可能不正确,并且与str实例上的任何属性或键都不匹配。原始异常文本是:“str”对象没有属性“Hero\u id”。
有什么想法吗?因为要序列化一组实例,需要将
many=True
传递给序列化程序:
要渲染到模板中(假设已正确配置),可以使用
render
函数,例如
views.py
index.html
{%代表英雄%}
{{hero.age}
{%endfor%}
用您的英雄型号代码更新您的问题它返回有序的dict,但我需要简单的字典。如何转换?您可以使用dict
构造函数将其转换为vanilladict
,例如dict(ordered_dict)
,但我不知道为什么需要这样做。现在它返回:dictionary update sequence元素#0的长度为4;2是必需的。在其他函数中,我需要以html形式传递Json:返回render(请求,“1.html”,“Hero”:serializer.data})
Json.dumps(serializer.data)
谢谢!最后一个问题。我怎样才能像上面提到的那样在html中传递它?
def HHH():
h=Hero.objects.all()
serializer= HeroSerializer(h, many=True)
return JsonResponse(serializer.data, safe=False)
ERRORS:
core.Hero.class_: (fields.E001) Field names must not end with an underscore.
from django.shortcuts import render
def HHH():
heros = Hero.objects.all()
serializer = HeroSerializer(heros, many=True)
return render(request, 'index.html', {'heros': serializer.data})
{% for hero in heros %}
<p>{{ hero.age }}</p>
{% endfor %}