目前,我正在使用带烧瓶的jinja2,并在数据库中使用ckeditor存储了博客文章。
理想情况下,数据应首先显示图像,然后显示博客文章和其他一些外部链接到flikr的图像。
我知道我可以在单个帖子视图中使用{{ post.body | safe}}
来将html显示为真实图像而不是html文本。
但是,我怎么不显示html,但只显示页面中帖子中的文字摘录,其中有多个链接到不同的假肢和摘录而没有显示图像html。
在这种情况下"这篇文章专门用于xyz"应该是摘录
数据库body
=列
<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>
的Jinja2
&#39;后&#39;是一个帖子对象。我试图将摘录限制为100个字母而没有html标签和图像。
{{post.body[:100]}}...
会显示<img alt="15189057555_7670752b57_o" class="main" src="https://farm6.staticflickr.com/5584/1518905755...
以下是循环浏览所有帖子的代码摘录,以提供指向单个博客页面的链接,时间戳以及博客内容的摘录。
<h1>Latest Posts</h1>
{% if posts %}
{% for post in posts%}
<div class="post">
<h2><a href="post/{{post.postid}}">{{post.title}}</a></h2>
<h6>{{post.timestamp.strftime('%a %y/%m/%d')}}</h6>
<p>{{post.body[:100]}}...</p>
<p>Posted By: {{post.author.nickname}}</p>
</div>
{% endfor %}
{% else %}
<h4>No blog posts currently</h4>
{% endif%}
有没有更好的方法来设计它?如果是这样,怎么样?请记住,我希望能够在一篇博文中插入多个图像和文字。
感谢您的帮助!
答案 0 :(得分:6)
您必须查看Jinja的{strong> striptags 和 truncate 过滤器http://jinja.pocoo.org/docs/dev/templates/#builtin-filters
示例:
>>> 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!'
在您的情况下,您要剥离标记,并限制为100个字符,因此请替换
<p>{{post.body[:100]}}...</p>
通过
<p>{{post.body|striptags|truncate(100)}}</p>