Ошибка выхода индекса списка за пределы диапазона из предыдущего представления при визуализации другого представления

Прошу прощения, если я упустил что-то глупое, но я новичок в Django и не могу разобраться с этим.

Я создаю базовое приложение в стиле reddit, ориентированное на криптовалюты. У меня есть представление, которое получает данные о цене из API и отображает их, а также все сообщения, относящиеся к этой монете:

views.py:

def coin_posts(request, id):
    if request.method == 'GET':
        coin_display = {}
        post = Post.objects.filter(coin_name=id)
        api = 'https://api.coingecko.com/api/v3/coins/markets?vs_currency=usd&ids=%s&order=market_cap_desc&per_page=100&page=1&sparkline=false' % id
        response = requests.get(api)

        data = response.json()
        coin = data[0]        

        coin_data = Coins(
            coin_id = coin['id'],
            coin_name = coin['name'],
            coin_price = coin['current_price'],
            market_cap = coin['market_cap'],
            rank = coin['market_cap_rank'],
            price_change = coin['price_change_24h'],
            slug = coin['symbol'],
            image_url = coin['image']
        )
        coin_data.save()
        coin_display = Coins.objects.filter(coin_id=id)

        return render(request, 'coins.html', { 
            'post': post,
            'coin_display': coin_display,
            'post_form': PostForm()
            },
        )

Я хочу иметь возможность нажать на каждое сообщение, чтобы просмотреть все комментарии, связанные с этим сообщением, так как я еще не дошел до этого, я просто хочу иметь возможность просмотреть это отдельное сообщение на другой странице. Итак, каждый пост имеет следующую ссылку в шаблоне:

<a href="{% url 'coin_detail' slug=i.slug  %}">Comments</a>

и вот соответствующие URL и вид:

urlpatterns = [
    path('', views.index, name="index"), 
    path('<str:id>/', views.coin_posts, name='coin_posts'),
    path('<slug:slug>/', views.post_detail, name='coin_detail'),
]

def post_detail(request, slug):
    post = Post.objects.filter(slug=slug)

    return render(request, 'coin_detail.html', { 
        'post': post,
        },
    )

Проблема в том, что когда я нажимаю на ссылку, я получаю ошибку: индекс списка вне диапазона. Который ссылается на coin = data[0] в первом представлении.

Я вижу, что он пытается заполнить базу данных, но поскольку нет данных GET, нет и списка для индексации. Мой вопрос в том, почему это происходит? Если я нажал на ссылку, которая вызывает функцию post_detail, почему выполняется код в функции coin_posts?

Я думаю, что проблема в путях url. Путь coin_posts "str:id/" равен пути post_detail 'slug:slug/'. Единственное различие между этими двумя урлами в том, что str принимает только строку, а slug будет соответствовать любой строке slug, состоящей из ASCII букв или цифр, плюс дефис и символ подчеркивания (reference). Попробуйте дефференцировать путь, добавив другой путь, например:

urlpatterns = [
    path('', views.index, name="index"), 
    path('coin_posts/<str:id>/', views.coin_posts, name='coin_posts'),
    path('post_detail/<slug:slug>/', views.post_detail, name='coin_detail'),
]
Вернуться на верх