Дата форматирования в Flask html / jinja2? - PullRequest
0 голосов
/ 31 марта 2020

как можно форматировать дату в html из flask render_template? я получаю таблицу inet из sqlalchemy, где указана дата 2020-03-31 10: 55: 15.500207 мне просто нужно% Y-% m-% d

 {% for item in cabinet %}
                <tr>
                    <td>{{item.name}}</td>
                    <td>{{item.stocktaking.strftime('%Y-%m-%d')}}</td>
                    <td>
                      {% if item.incomplete == true %}<span class="btn btn-sm btn-secondary">Incomplete</span>
                      {% else %}<span class="btn btn-sm btn-success">Complete</span>
                      {% endif %}
                    </td>
                    <td><a class="btn btn-sm btn-primary" href="{{ url_for('stocktaking_cabinet', name=item.name) }}" role="button">Show</a></td>
                    <td><a class="btn btn-sm btn-danger" href="{{ url_for('stocktaking_cabinet_reset', name=item.name) }}" role="button">Reset</a></td>
                  </tr>

strftime ('% Y-% m-% d ') не работает внутри html. Показать эту ошибку: jinja2.exceptions.UndefinedError: «Нет» не имеет атрибута «strftime»

Таблица:

class Cabinet(db.Model):
    id         = db.Column(db.Integer, primary_key=True)
    name       = db.Column(db.String(20))
    stocktaking = db.Column(db.DateTime, default=datetime.now())
    incomplete    = db.Column(db.Boolean)

1 Ответ

0 голосов
/ 31 марта 2020

Проверьте вашу базу данных напрямую. Я думаю, вы обнаружите, что stocktaking - это null, что означает None в python.

Вы можете изменить свой шаблон на использование

<td>{% if item.stocktaking %}{{item.stocktaking.strftime('%Y-%m-%d')}}{% else %}None{% endif %}</td>

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

stocktaking = db.Column(db.DateTime, default=datetime.now)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...