我正在Django中构建一个博客应用程序,当我显示所有博客时,我想在每个条目中显示一个小博客摘录。谁能告诉我怎么办?
这样做的一种方法是创建一个额外的字段并存储固定数量的单词 每篇博客文章,比方说20个单词。但那将是存储冗余信息 在数据库中。有没有更好的方法呢?
答案 0 :(得分:14)
我建议您使用truncatewords模板过滤器。
模板示例:
<ul>
{% for blogpost in blogposts %}
<li><b>{{blogpost.title}}</b>: {{blogpost.content|truncatewords:10}}</li>
{% endfor %}
</ul>
如果博客内容存储为HTML,请使用truncatewords_html
确保在截断点后关闭打开的代码(或与striptags
结合使用以删除html代码)。
如果要截断字符(而非单词),可以使用slice
:
{{blogpost.content|slice:":10"}}
(输出前10个字符)。
如果内容存储为HTML,请与striptags
结合使用以避免打开代码问题:{{blogpost.content|striptags|slice:":10"}}
答案 1 :(得分:2)
在Django 1.4及更高版本中,有一个truncatechars过滤器会将字符串截断为特定长度并使用...
终止它。它实际上将其截断为特定长度减去3,最后3个字符变为...
。
答案 2 :(得分:1)
有点相关......
我刚才提供了这个问题的答案:Django strip_tags template filter add space可以帮助其他人制作包含HTML标签和&lt; p&gt;中短片内容的摘录。标签。
帮助转换..
"<p>This is a paragraph.</p><p>This is another paragraph.</p>"
到此..
'This is a paragraph. This is another paragraph.'
而不是这个..
'This is a paragraph.This is another paragraph.'