Django中的博客摘录
我正在用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"}}