HackerNews API extraction error - TypeError: list indices must be integers or slices, not str

52 Views Asked by At

Trying to run this code to get the topstories from hacker news is giving me this error 'TypeError: list indices must be integers or slices, not str', the error is generated at

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)

What can I do to correct this error as I'm following a video showing a similar project but this error was not seen, I've also tried removing the '' but receive an error 'UnboundLocalError at / local variable 'story' referenced before assignment'

story = data['story']

1

There are 1 best solutions below

0
NixonSparrow On BEST ANSWER

Your 'data' is a list of numbers, not a dictionary. Depending on whether you want to have one or more numbers from that list you can do one of such options:

# 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)