flask中,如何在首页实现文章摘抄

我需要在网站首页显示文章标题,并在标题下面显示50字左右的文章摘抄.

数据库中的Post类中,有bodybody_html两个对象。其中body是存储的markdown格式的文本,body_html是将body转换为html格式后的文本。

我的想法是用正则匹配,但是body中有markdown语法符号,而body_html中带有html标签。都会很影响匹配。

请问有没有其他的方法实现文章摘抄?谢谢。

阅读 5.9k
4 个回答

自己找到了一个比较好的解决方法。来自问自答了。

flask用的是jinja2模板引擎,jinja2有一些很好用的变量过滤器

其中,safetruncate就是这里要用的。

关于过滤器的细节看文档吧,贴一下我的代码:

<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格式的文章。

效果:

图片描述

确实是个问题,这样的话,你就直接输出 body_html 好了,然后让前端去截取处理。

只需要保证 body_html 在前端正常以 HTML 模板方式渲染。前端取摘要的时候就会取已经格式化后的 text 了。

用后台对markdown文本进行解析(应该有很多现成的库),取其中一部分传到前端(减少首页数据传输,加快首页加载)。或者数据库再增加加一个字段存储解析出来的摘要,虽然添加文章时比较麻烦,但是以后就会节省很多事。

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