Задали задание:
Сделать так, чтобы под новостью на сайте отображалось, сколько дней назад был сделан пост.
Пока что встал на данном этапе.
1 2 3 4 5 6 7 8 9 |
@app.route('/')
def index():
db_sess = db_session.create_session()
news = db_sess.query(News).filter(News.is_private == 0)
time_diff = misc.day_diff(date1=datetime.datetime.now(), date2=datetime.datetime.date(News.created_date))
return render_template('index.html',
title='Главная страница',
username='Слушатель',
news=news)
|
в html файле запись следующая(Новости перебираются через цикл for):
1
|
<p>Написано: {{ item.misc.created_date }}</p>
|
Буду рад помощи в решении и объяснении задачи
@mjDanny Чтобы отобразить, сколько дней назад был сделан пост, вам нужно правильно передать эту информацию в шаблон HTML из вашего Python-кода. В вашем коде есть несколько моментов, которые нужно исправить. Вот как это можно сделать:
Чтобы отобразить, сколько дней назад был сделан пост, вам нужно правильно передать эту информацию в шаблон HTML из вашего Python-кода. В вашем коде есть несколько моментов, которые нужно исправить. Вот как это можно сделать:
timedelta для вычисления разницы между текущей датой и датой создания новости. Затем передайте эту информацию в шаблон через переменные.Вот обновленный код:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
# Импортируйте необходимые модули from flask import Flask, render_template import datetime from your_module import db_session # Подставьте ваш модуль для работы с базой данных from your_module.models import News # Подставьте соответствующую модель для новостей app = Flask(__name__) @app.route('/') def index(): db_sess = db_session.create_session() news = db_sess.query(News).filter(News.is_private == 0).all() # Используйте .all() для получения всех записей for item in news: # Вычисляем разницу между текущей датой и датой создания новости time_diff = datetime.datetime.now() - item.created_date # Преобразуем разницу в количество дней days_ago = time_diff.days # Добавляем новое поле в объект новости для передачи в шаблон item.days_ago = days_ago return render_template('index.html', title='Главная страница', username='Слушатель', news=news) |
Теперь ваша модель новости содержит поле days_ago, которое представляет количество дней с момента создания новости.
В вашем шаблоне HTML (index.html) вы можете отобразить это значение следующим образом:
1 2 3 4 5 6 |
{% for item in news %}
<h2>{{ item.title }}</h2>
<p>{{ item.content }}</p>
<p>Написано: {{ item.created_date.strftime('%Y-%m-%d') }}</p>
<p>{{ item.days_ago }} дней назад</p>
{% endfor %}
|
Этот код отобразит дату создания новости и количество дней назад, когда она была опубликована.