请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

html文件里通过{{ }}运行的python语句不支持字符串处理

请问老师:
html文件里通过{{ }}运行的python语句不支持字符串处理。问题如下:
同样一句话

print(str(pro.items[0].CastingDate).replace("2019-", ""))

能得到想要的结果
但是在html文件里写

{% for n in pro.items %}
<tr>
<td>{{ str(n.CastingDate).replace("2019-", "") }}</td>
</tr>
{% endfor %}

就报错提示
jinja2.exceptions.UndefinedError
jinja2.exceptions.UndefinedError: ‘str’ is undefined

这种情况怎么解决啊?

难道非要在py文件里面遍历pro.items处理完字符串才能传给html吗?

正在回答

1回答

模板中只支持一些特定的python语法,基于你这个问题,有两种方法解决:

  1. 就是在py文件里面处理好,再传给html模板

  2. 使用过滤器,jinja2模板为我们提供了很多内置的过滤器(见下面的文档),当然,如果内置的过滤器不够用,我们也可以写过滤器。

http://docs.jinkan.org/docs/jinja2/templates.html#replace

0 回复 有任何疑惑可以回复我~
  • 提问者 慕婉清7059351 #1
    是这样的老师。模板里面可以使用replace处理字符串。
    我的需求是,用str()把datetime.date格式的数据处理成str。然后就可以进行字符串处理了。
    但是模板竟然不支持str()这种最最基本的语句。
    还有自己写过滤器貌似很复杂,有什么其他方法么?
    回复 有任何疑惑可以回复我~ 2019-06-27 16:56:15
  • NavCat 回复 提问者 慕婉清7059351 #2
    <td>{{ n.CastingDate|replace("2019-", "") }},就这样呀。模板里面提供的replace过滤器就能搞定你的需求了呀。
    回复 有任何疑惑可以回复我~ 2019-06-27 17:08:09
  • 提问者 慕婉清7059351 回复 NavCat #3
    感谢老师,然后我又突然想到另一种方法,
    {{ n.CastingDate.strftime('%m-%d') }}
    回复 有任何疑惑可以回复我~ 2019-06-28 07:16:31
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信