【问题标题】:Date formatting in Flask Html/jinja2?Flask Html/jinja2中的日期格式?
【发布时间】:2020-07-11 18:47:11
【问题描述】:

如何从烧瓶渲染模板中格式化 html 中的日期?我从 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>

表:

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)

strftime('%Y-%m-%d') 在 html 中不起作用。它显示此错误: jinja2.exceptions.UndefinedError: 'None' has no attribute 'strftime'

【问题讨论】:

  • 你能给我看看你的橱柜清单吗?
  • 我尝试使用@app.template_filter('dt') def _jinja2_filter_datetime(date, fmt=None): if fmt: return date.strftime(fmt) else: return date.strftime(gettext( '%%m/%%d/%%Y')) 但同样的错误 jinja2.exceptions.UndefinedError: 'None' has no attribute 'strftime'

标签: html python-3.x flask jinja2 flask-sqlalchemy


【解决方案1】:

直接检查您的数据库。我想你会发现stocktakingnull 在python 中转换为None

你可以改变你的模板来使用

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

另外,您需要更改此行以传递函数本身而不是结果,否则如果您的程序连续运行一天以上,您会发现您的默认日期太旧了。

stocktaking = db.Column(db.DateTime, default=datetime.now)

【讨论】:

  • 存储的表数据没问题,但看起来像这样:2020-03-31 10:55:15.500207 我只想要 2020-03-31。我检查@shoytov 链接,当我每次尝试制作过滤器时都会显示错误:jinja2.exceptions.UndefinedError: 'None' has no attribute 'strftime'
  • 向我们展示将cabinet 数据传递给模板的视图函数。也许这会产生一个线索。
  • 内阁 ​=​ Cabinet.query.all()
猜你喜欢
  • 2011-06-17
  • 2011-06-22
  • 2022-12-05
  • 2022-11-14
  • 1970-01-01
  • 2021-05-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多