Невозможно получить информацию из API codeforces в Django

В моем проекте мне нужно показать название сайта конкурса. Я не могу жестко закодировать название, так как мне нужно загрузить название & детали различных сайтов в соответствии с потребностями пользователя. Мне нужно показать название сайта конкурса, название конкурса, дату и время конкурса (найденные в формате UNIX в API, которые должны быть преобразованы), URL конкурса (который находится в списке возвращаемых элементов, но не отображается, пока я открываю API)

Я новичок в Django и впервые работаю с API

Я написал функцию в файле views.py

def homepage(request):
    response = pip._vendor.requests.get('https://codeforces.com/api/contest.list').json()
    return render(request,'home.html',response)

а в HTML я сделал вот так, чтобы получить название всех конкурсов

<div class="box">
                {% for i in response %}
                {{i.name}}
                {% endfor %} 
        </div>

Я думаю, что проблема связана не с Django, а с тем, как вы обрабатываете JSON, в частности, в вашем представлении API из запроса (я предполагаю, что вы используете пакет requests) будет возвращать JSON

давайте посмотрим, что возвращает API:

{
  "status": "OK",
  "result": [
    {
      "id": 1768,
      "name": "Codeforces Round (Div. 2)",
      "type": "CF",
      "phase": "BEFORE",
      "frozen": false,
      "durationSeconds": 7200,
      "startTimeSeconds": 1672929300,
      "relativeTimeSeconds": -2433104
    },
    {
      "id": 1770,
      "name": "Good Bye 2022",
      "type": "CF",
      "phase": "BEFORE",
      "frozen": false,
      "durationSeconds": 9000,
      "startTimeSeconds": 1672410900,
      "relativeTimeSeconds": -1914704
    },
    ...
  ]
}

Итак, в ответе JSON нужная вам деталь - значение result, это значение представляет собой массив словарей. Перебирая список, вы можете получить значение

from django.utils.timezone import make_aware
from datetime import datetime

def homepage(request):
    response = pip._vendor.requests.get('https://codeforces.com/api/contest.list').json()
    # convert timestamp to readable datetime string
    for contest in response.result:
        contest["start_time"] = make_aware(datetime.fromtimestamp(contest["startTimeSeconds"]))
    return render(request,'home.html',response)

и в вашем шаблоне:

<div class="box">
   {% for i in response.result %}
        <h3>Name</h3>: <p>{{ i.name }}</p>
        <h3>Date and time</h3>: <p>{{ i.start_time|date:'Y-m-d H:i' }}</p>
    {% endfor %} 
</div>

для формата даты-времени следуйте Django docs

Я не вижу ничего, связанного с contest URL в вашем API, хотя

Вернуться на верх