如何在Jinja2模板中覆盖/自定义(本机)对象的默认格式?

时间:2014-03-04 00:18:55

标签: python flask escaping jinja2 flask-admin

我想更改在刻录机管理员中显示日期的默认方式,为其提供特定时区并以更易于阅读的格式显示。

有很多方法可以解决此问题(过滤器,__html____str__,Babel等),但是虽然这些方法可行,但我的问题是是否有更通用的方法一个更普遍的问题。格式化日期的具体问题只是一个例子。

在我的场景中,我无法控制日期对象 - 我无法对其进行子类化或monkeypatch __str____html__方法。我希望它能够自动发生在模板中的所有日期,并且我不想编写自定义管理模板,并且我不想在我的模板中使用显式过滤器来实现此方案。

我理想的解决方案是以某种方式指定Jinja的默认过滤器,以便所有数据在呈现之前通过该过滤器传递。我可以自己编写过滤器,但是我无法看到如何让Jinja使用它。

我曾经想过要以某种方式使用自动转换(参见this question),但我无法在没有讨厌的monkeypatching的情况下覆盖Jinja的自动转换功能。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

如果您想在Flask-Admin相关代码中使用,则可以依赖column_type_formatters

https://flask-admin.readthedocs.org/en/latest/api/mod_model/#flask.ext.admin.model.BaseModelView.column_type_formatters