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


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

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

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

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

flask markdown jinja2 HTML

xxxLoki 9 years, 4 months ago

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

立直一發D勇士 answered 9 years, 4 months ago

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

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

茶姬上的杯具 answered 9 years, 4 months ago

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

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

其中, safe truncate 就是这里要用的。

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


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

效果:

图片描述

私Dバナナ answered 9 years, 4 months ago

Your Answer