在 django 中截断 html 文本

Posted

技术标签:

【中文标题】在 django 中截断 html 文本【英文标题】:Truncate html text in django 【发布时间】:2016-05-05 10:44:11 【问题描述】:

在 django 中,我们可以使用截断器类来截断文本

from django.utils.text import Truncator
s = "<div>Please truncate this</div>"
Truncator(s).words(2, html=True)

这将返回省略号,所以让我们将省略号替换为其他内容

truncate = "read more %(truncated_text)s"
Truncator(s).words(2, html=True,truncate=truncate)

这会返回&lt;div&gt;Please truncateread more &lt;/div&gt;

 truncate = "%(truncated_text)s read more" 
 Truncator(s).words(2, html=True,truncate=truncate)

这会返回&lt;div&gt;Please truncate read more&lt;/div&gt;

但我想得到read more &lt;div&gt;Please truncate&lt;/div&gt;

这可以通过检查截断文本的长度来完成,是否有任何智能方法可以做到这一点?

编辑: 如果不可能,我们可以得到这个&lt;div&gt;Please truncate&lt;/div&gt;read more

【问题讨论】:

【参考方案1】:

Truncator 类总是将truncate 附加到字符串的末尾。 所以,我认为最好的方法是比较截断的字符串和原始字符串,并在需要时添加“阅读更多”

截断器类源代码。 https://github.com/django/django/blob/master/django/utils/text.py#L224

【讨论】:

正如我已经提到的,这可以通过比较来完成,我正在寻找其他方法。问题在于截断器它附加在文本内部而不是最后添加。我有这部分的更新问题。 使用 django Truncator 无法做到这一点。

以上是关于在 django 中截断 html 文本的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Django 模板引擎上截断/切片字符串?

bootstrap5 文本文字排版类

Django模板截断列表以显示前n个元素

Django:为啥我放置在 Django Summernote 中的文本会在我的 HTML 模板中显示 HTML 标记?

在Django中截断文本但向后方向

有没有办法在Django的视图中截断单词?