Django中的博客摘录

11 投票
3 回答
4170 浏览
提问于 2025-04-17 04:59

我正在用Django搭建一个博客应用,当我展示所有博客时,我想每个博客旁边显示一个小摘要。有没有人能告诉我该怎么做?

一种方法是为每个博客条目增加一个额外的字段,存储固定数量的单词,比如说20个单词。但这样的话,就会在数据库里存储重复的信息。有没有更好的方法呢?

3 个回答

1

有点相关的内容..

我刚刚给这个问题提供了一个答案:Django strip_tags 模板过滤器添加空格,希望能帮助那些在处理包含HTML标签和短内容的<p>标签时的人。

这个方法可以把下面的内容转换成..

"<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.'
2

在Django 1.4及以后的版本中,有一个叫做truncatechars的过滤器,它可以把一个字符串截断到指定的长度,并在末尾加上...。实际上,它会把字符串截断到指定长度减去3个字符,最后的3个字符就是...

21

我建议你使用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"}}

撰写回答