3

我有一个从数据库中提取 HTML 内容的系统,它看起来像这样:

<p>This is some text</p>
<p>More text</p>
<p>Third Paragraph</p>

并且在显示它时,它会显示博客文章内容的简短摘要,但是现在在显示文本时,我已将字符限制设置为 200 之类的数字,这将导致摘要如下所示:

<p>This is some text</p>
<p>More text</

在任何地方切断内容,可能会破坏网页的其余部分。python有没有办法关闭所有打开的标签或只获得一定数量的顶级块?例如,2 个块将是前两个<p></p>标签。在显示文章的简短预览时,我已经看到 word press 具有此功能。

4

1 回答 1

5

如果您需要在模板中执行此操作,请查看 truncatewords-html:https ://docs.djangoproject.com/en/dev/ref/templates/builtins/#truncatewords-html

或者在其他地方,如果您需要一些自定义行为,您可以使用应该适用于大多数用例的底层django.utils.text.Truncator类(https://github.com/django/django/blob/1.7/django/utils/text.py#L65 )该代码作为自己实现它的参考。

更新

如果你需要django.utils.text.Truncator直接使用,这就是你实例化和调用words()方法的方式(这正是 truncatewords-html 过滤器的作用)

Truncator(value).words(length, html=True, truncate=' ...')
于 2013-04-06T05:29:50.133 回答