Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
349 views
in Technique[技术] by (71.8m points)

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

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


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

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


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...