Flask博客中想实现对每个文章生成一个几百字的介绍

我的想法很简单,就是想用flatpages + markdown来生成文章页面。现在就是想在index页面有个文章列表,这个列表上可以展示一下文章的前面部分一段内容。当时想着可以在网页里面设置一个标记,标记部分就可以做为介绍,放到index页面上。不过感觉这种方法笨笨的,不知道有没有更好的方法?

阅读 2.6k
1 个回答

上网找了一圈资料,发现可以利用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 }}

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题