上网找了一圈资料,发现可以利用Jinja2里面的过滤器来完成:
{{ post.html|truncate(250) }}
就可以截取前面250个字符当成summary了,不过截取得到的summary的html代码 ,可能有些tag是缺失的。这里可以利用BeautifulSoup对tag进行补全,这里在jinja2中新建一个filter
from bs4 import BeautifulSoup as bs
# fix unnested html code
def prettify(html):
soup = bs(html, 'html.parser')
return soup.prettify()
# register custom filter in flask app
app.jinja_env.filters['prettify']=prettify
最后在模板中应该使用{{ post.html|truncate(250)|prettify|safe }}
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…