Ошибка извлечения 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)
Вернуться на верх