Flask 如何在不必使用Jinja2模板显示html代码的情况下提供博客摘录?

Flask 如何在不必使用Jinja2模板显示html代码的情况下提供博客摘录?,flask,jinja2,flask-sqlalchemy,Flask,Jinja2,Flask Sqlalchemy,目前,我正在将jinja2与flask一起使用,并在数据库中使用ckeditor存储了一篇博客文章 理想情况下,数据应该先显示一张图片,然后再显示博客帖子和其他一些外部链接到flikr的图片 我知道我可以在的单个post视图中使用{{post.body | safe}}将html显示为真实图像,而不是html文本 但是,我如何不显示html,而是在页面中仅显示文章中的文本摘录,其中有多个指向不同Prost和摘录的链接,而不显示图像html 在这种情况下,“这篇文章是专门为xyz”应该是摘录 数据

目前,我正在将jinja2与flask一起使用,并在数据库中使用ckeditor存储了一篇博客文章

理想情况下,数据应该先显示一张图片,然后再显示博客帖子和其他一些外部链接到flikr的图片

我知道我可以在的单个post视图中使用
{{post.body | safe}}
将html显示为真实图像,而不是html文本

但是,我如何不显示html,而是在页面中仅显示文章中的文本摘录,其中有多个指向不同Prost和摘录的链接,而不显示图像html

在这种情况下,“这篇文章是专门为xyz”应该是摘录

数据库
body
=列

这篇文章是专门为xyz写的

金甲2号

“post”是一个post对象。我试图将摘录限制为100个字母长,没有html标记和图像

{{post.body[:100]}…
将显示

下面是一段代码摘录,用于循环浏览所有文章,以提供指向单个博客页面的链接、时间戳以及博客内容的摘录

最新帖子
{%if posts%}
{posts%%中的post为%s}
{{post.timestamp.strftime(“%a%y/%m/%d”)}
{{post.body[:100]}}

发布人:{{post.author.昵称}}

{%endfor%} {%else%} 目前没有博客文章 {%endif%}
有更好的设计方法吗?如果是,怎么做?请记住,我希望能够在一篇博文中插入多个图像和文本


谢谢你的帮助

您必须查看Jinja的striptagstruncate过滤器

例如:

>>> from jinja2 import Template
>>> template = Template('blogpost: {{ post|striptags }}!')
>>> template.render(post='<img alt="15189057555_7670752b57_o" class="main" src="https://farm6.staticflickr.com/5584/15189057555_7670752b57_o.jpg" style="width:100%;max-width:1920px"><p>This post is dedicated to xyz</p>') 
u'blogpost: This post is dedicated to xyz!'
来自jinja2导入模板的
>>
>>>template=template('blogpost:{{post | striptags}}}!')
>>>template.render(post='此post专用于xyz

') u'blogpost:这篇文章是献给xyz的
在您的情况下,您希望剥离标记,并限制为100个字符,因此请替换

<p>{{post.body[:100]}}...</p>
{{post.body[:100]}}

{{post.body | striptags | truncate(100)}


现在,如果我只想得到第一张图像,该怎么办<代码>{post.body | first | select(“img”)}
?我想你必须做一个自定义过滤器。@user805981你有没有设法找到如何检索第一个图像的方法?谢谢
<p>{{post.body|striptags|truncate(100)}}</p>