Django-如何显示文章摘要?


需要在blog主页显示文章的摘要, 即显示文章的前面一部分.

在django中, 我尝试过以下做法:

{{ post.get_message_as_markdown|safe| truncatechars:'400'}}       // 截取文章的前400个词

但问题是, 文章中为了排版可能带有html标记(实际上是使用了markdown语法), 如:

  who are you ?<p>I am python </p> 

如果不凑巧, 碰巧截取掉了某个html标记, 如变为:

  who are you ?<p>I am python            //少了个结束标志 '</p>'

那么整个页面都会被破坏.

如果恰好截取到中间,则前端显示一定会出现排版乱码的现象

这时候就会出现以下情况:

原来django其实早就帮我们解决好这个问题了,通过过滤器truncatechars_html

# 像这样的模板
{{ value|truncatechars_html:9 }}
如果value是“&lt; p&gt; Joel 是 a slug&lt; / p&gt; “,输出将为”&lt; p&gt; Joel i …&lt; / p&gt;“ t7 >。

解决方法是:

truncatewords_html 或者 truncatechars_html(django 1.7以上)

# 将truncatechars替换为truncatechars_html
{{ post.get_message_as_markdown|safe|truncatechars_html:400}}