繁体   English   中英

在 Django 中,为什么会出现错误“/字符串索引处的类型错误必须是整数”?

[英]In Django why the error "TypeError at / string indices must be integers"?

我正在尝试学习如何在 Django 中保存来自 kraken api 的 json 内容的一部分。 通过stackoverflow上的几个例子,我想出了这个代码:

视图.py

from django.shortcuts import render
from meal_app.models import Kraken
import requests

def get_krakens(request):
    all_krakens = {}
    url ='https://api.kraken.com/0/public/Assets' 
    response = requests.get(url)
    data = response.json()

    
    for i in data:
        kraken_data = Kraken(
            name = i['altname']
            )
        kraken_data.save()
        all_krakens = Kraken.objects.all().order_by('-id')

    return render (request, 'krakens/kraken.html', { "all_krakens": 
    all_krakens} )

当我尝试运行时,它出现: 在此处输入图片说明

我该如何解决这个错误? 我的 json 在我的控制台中可见,但我无法访问值“altname”。 您的帮助将不胜感激。

/Users/davidmoreira/Documents/crypto/djangokrakenapi/meal_project/meal_app/views.py, line 14, in get_krakens
            name = i['altname']
from django.shortcuts import render
from meal_app.models import Kraken
import requests

def get_krakens(request):
    all_krakens = {}
    url ='https://api.kraken.com/0/public/Assets' 
    response = requests.get(url)
    data = response.json()

    
    for i in data:
        kraken_data = Kraken(
            name = data['result'][i]['altname']
            )
        kraken_data.save()
        all_krakens = Kraken.objects.all().order_by('-id')

    return render (request, 'krakens/kraken.html', { "all_krakens": 
    all_krakens} )

在 iPad 上,因此无法检查,但我怀疑您的 'i' 是一个字符串,需要先转换为 Python 对象/字典,然后才能从中提取子元素。

查看json模块中的json.loads方法。

你的“i”是一个字符串的形式。 您需要先将其转换为对象。 使用i = json.loads(i)

循环字典会循环它的键,而不是它的值。 你要:

for i in data.values():

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM