我需要在网站首页显示文章标题,并在标题下面显示50字左右的文章摘抄.
数据库中的Post类中,有body和body_html两个对象。其中body是存储的markdown格式的文本,body_html是将body转换为html格式后的文本。
我的想法是用正则匹配,但是body中有markdown语法符号,而body_html中带有html标签。都会很影响匹配。
请问有没有其他的方法实现文章摘抄?谢谢。
自己找到了一个比较好的解决方法。来自问自答了。
flask用的是jinja2模板引擎,jinja2有一些很好用的变量过滤器。
其中,safe和truncate就是这里要用的。
•safe过滤器渲染值时不转义,很适合显示变量中存储的HTML代码。
•truncate(s, length=255, killwords=False, end='...')过滤器可以把变量按长度截断,并在末尾加上“……”。这就是我想要的效果了。
关于过滤器的细节看文档吧,贴一下我的代码:
<div class="container">
<h1>{{ posts[0].title }}</h1>
<p >{{ posts[0].body_html | safe | truncate(200, True)}}</p>
</div>
这里post[0]是flask中输出的Model类,posts[0].body_html存储了html格式的文章。
效果:
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。