Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/355.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何将数据库中的所有数据作为Json返回?_Python_Json_Django_Database_Rest - Fatal编程技术网

Python 如何将数据库中的所有数据作为Json返回?

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

如何将数据库中的所有数据作为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.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
构造函数将其转换为vanilla
dict
,例如
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 %}