Как решить эту проблему l oop в python flask? - PullRequest
0 голосов
/ 20 февраля 2020

Я пытаюсь пролистать каждую статью и показать ее на веб-странице, но это то, что происходит ..

Мой python код:

@app.route('/scrapper')
def scrapper():

    response = requests.get('http://newsapi.org/v2/top-headlines?country=us&category=business&apiKey=api-key')

    data = response.json() 
    articles = data['articles'] 

    for i in range(len(articles)):
        myarticles = articles[i]

    return render_template('news.html', myarticles=myarticles)

И это как это выглядит в html:

<body>
{% for info in myarticles %}
    <h2>Title: {{myarticles.title}}  </h2>
    <p>Author: {{myarticles.author}}  </p>
    <p>Url: {{myarticles.url}}  </p>
    <p>Content: {{myarticles.content}} </p>
    <p>Date: {{myarticles.publishedAt}} </p>
{% endfor %}
</body>

Возвращается только одна статья, но много раз, как в этой фотографии . Это мой самый первый подобный проект, поэтому прошу прощения.

РЕДАКТИРОВАТЬ: Я удалил l oop и прошел, как вы сказали. Но теперь у меня ничего нет, просто пустая страница вот так .

1 Ответ

2 голосов
/ 20 февраля 2020

Ваша проблема заключается в следующем:

for i in range(len(articles)):
    myarticles = articles[i]

myarticles всегда будет указывать на последнюю статью в вашем списке статей.

Поскольку в вашем шаблоне вы уже просматриваете статьи, просто передать в статьях.

return render_template('news.html', myarticles=articles)

Забыл также упомянуть, что вам нужно использовать зацикленную статью:

<body>
{% for info in myarticles %}
    <h2>Title: {{myarticles.title}}  </h2>
    <p>Author: {{myarticles.author}}  </p>
    <p>Url: {{myarticles.url}}  </p>
    <p>Content: {{myarticles.content}} </p>
    <p>Date: {{myarticles.publishedAt}} </p>
{% endfor %}
</body>

Это неправильно, потому что вы не используете информацию, которая имеет данные для каждого отдельного товара.

Вам необходимо изменить его на:

<body>
{% for info in myarticles %}
    <h2>Title: {{info.title}}  </h2>
    <p>Author: {{info.author}}  </p>
    <p>Url: {{info.url}}  </p>
    <p>Content: {{info.content}} </p>
    <p>Date: {{info.publishedAt}} </p>
{% endfor %}
</body>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...