Заполните список в Django, используя представление - PullRequest
0 голосов
/ 05 апреля 2020

У меня есть следующая функция для чтения заголовков новостей в список Python:

import requests


def us_news_articles():
    url = 'https://newsapi.org/v2/top-headlines?country=us&apiKey=###
    source = requests.get(url)
    data = source.json()
    us_news_articles_list = []
    for article in data['articles']:
        us_news_articles_list.append(article)
    return us_news_articles_list

Эта функция работает, и я ее проверил.

Теперь я хочу использовать это для заполнения HTML li элементов

У меня построены следующие представления:

def viz(request):
    return render(request, 'resume/viz.html')

class USNewsArticles(TemplateView):
    template_name = 'viz'

    def get_context_data(self, *args, **kwargs):
        context = {
            'articles': us_news_articles(),
        }
        return context

Мой URL выглядит так this

path('viz/', views.viz, name='viz')

И в моем файле HTML есть следующее:

            <ul>
            {% for article in articles %}
              <li>{{ article.title }}</li>
                <ul>
                  <li>{{ article.description }}</li>
                </ul>
            {% endfor %}
            </ul>

Однако при развертывании веб-сайта я не получаю список. Я считаю, что это проблема с представлением, но я недостаточно разбираюсь в понимании представлений и функций, чтобы понять, почему он не заполнит li элементов

.

1 Ответ

0 голосов
/ 05 апреля 2020

Ваши URL-адреса перенаправляются в ваше представление viz, которое просто отображает пустой шаблон (viz.html). Я думаю, что вы хотели сделать, это:

class USNewsArticles(TemplateView):
    template_name = 'resume/viz.html'

    def get_context_data(self, *args, **kwargs):
        context = {
            'articles': us_news_articles(),
        }
        return context

И ваш URL:

path('viz/', USNewsArticles.as_view())

TemplateView является помощником, где вы указываете файл шаблона напрямую, и он предоставляет соответствующий GET обработчик. - нет необходимости в промежуточной функции def myview. На самом деле, прелесть взглядов на основе классов заключается в том, что для вас написано множество шаблонов. Если вы не настраиваете поведение, вам обычно не нужно писать методы, которые возвращают Responses вручную.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...