Ошибка извлечения API HackerNews - TypeError: индексы списка должны быть целыми числами или срезами, а не строками
Пытаясь запустить этот код для получения топ-стори из hacker news, я получаю ошибку 'TypeError: list indices must be integers or slices, not str', ошибка генерируется в
story = data['story']
from multiprocessing import context
from django.shortcuts import render
import requests
# Create your views here.
def index(request):
#make an api call and save response
url = f'https://hacker-news.firebaseio.com/v0/topstories.json'
response = requests.get(url)
data = response.json()
story = data['story']
context = {
'story': story
}
return render(request, 'SyncNews/index.html', context)
Что я могу сделать, чтобы исправить эту ошибку, так как я слежу за видео, показывающим похожий проект, но эта ошибка не была замечена, я также пробовал удалить '', но получаю ошибку 'UnboundLocalError at /. local variable 'story' referenced before assignment'
story = data['story']
Ваши "данные" - это список чисел, а не словарь. В зависимости от того, хотите ли вы получить одно или несколько чисел из этого списка, вы можете сделать один из таких вариантов:
# first number:
def index(request):
...
data = response.json()
story = data[0]
context = {
'story': story
}
return render(request, 'SyncNews/index.html', context)
# list of numbers:
def index(request):
...
data = response.json()
context = {
'story': data
}
return render(request, 'SyncNews/index.html', context)