我需要在网站首页显示文章标题,并在标题下面显示50字左右的文章摘抄.
数据库中的Post
类中,有body
和body_html
两个对象。其中body
是存储的markdown格式的文本,body_html
是将body
转换为html
格式后的文本。
我的想法是用正则匹配,但是body
中有markdown语法符号,而body_html
中带有html
标签。都会很影响匹配。
请问有没有其他的方法实现文章摘抄?谢谢。
我需要在网站首页显示文章标题,并在标题下面显示50字左右的文章摘抄.
数据库中的Post
类中,有body
和body_html
两个对象。其中body
是存储的markdown格式的文本,body_html
是将body
转换为html
格式后的文本。
我的想法是用正则匹配,但是body
中有markdown语法符号,而body_html
中带有html
标签。都会很影响匹配。
请问有没有其他的方法实现文章摘抄?谢谢。
确实是个问题,这样的话,你就直接输出 body_html
好了,然后让前端去截取处理。
只需要保证 body_html
在前端正常以 HTML 模板方式渲染。前端取摘要的时候就会取已经格式化后的 text 了。
用后台对markdown文本进行解析(应该有很多现成的库),取其中一部分传到前端(减少首页数据传输,加快首页加载)。或者数据库再增加加一个字段存储解析出来的摘要,虽然添加文章时比较麻烦,但是以后就会节省很多事。
4 回答2.2k 阅读
3 回答2.1k 阅读
1 回答3.6k 阅读
2 回答994 阅读✓ 已解决
2 回答2.5k 阅读
4 回答956 阅读
2.6k 阅读
自己找到了一个比较好的解决方法。来自问自答了。
flask用的是jinja2模板引擎,
jinja2
有一些很好用的变量过滤器。其中,safe和truncate就是这里要用的。
safe过滤器渲染值时不转义,很适合显示变量中存储的HTML代码。
truncate(s, length=255, killwords=False, end='...')过滤器可以把变量按长度截断,并在末尾加上
“……”
。这就是我想要的效果了。关于过滤器的细节看文档吧,贴一下我的代码:
这里
post[0]
是flask中输出的Model
类,posts[0].body_html
存储了html
格式的文章。效果: