使用 Django 模板过滤器限制字符数
Posted
技术标签:
【中文标题】使用 Django 模板过滤器限制字符数【英文标题】:Limit number of characters with Django Template filter 【发布时间】:2011-03-29 21:19:28 【问题描述】:我正在尝试在项目列表上输出描述的前 255 个字符,并且正在寻找一种方法来获得它。
示例:我有一个包含 300 个左右字符的变量。
我这样称呼那个变量, my_variable|characterlimit:255
它只会返回该变量的前 255 个字符。
如果这个标签不存在,我将简单地创建它(并建议它进入 django),但我想在花时间做之前确保它不存在。谢谢!
【问题讨论】:
【参考方案1】:如果“my_variable”是字符串,您可以利用slice filter,它将字符串视为字符列表。如果它是一组词,大致等价词是 truncatewords - 但这听起来不太符合您的需要。
truncatewords
还在截断结果的末尾添加省略号...
。
用法类似于
my_variable|slice:":255"
【讨论】:
【参考方案2】:有一个official built-in filter:
variable|truncatechars:255
【讨论】:
这会将省略号(“...”)放在被截断的字符串后面(而不是在未截断的字符串后面)。 Slice 没有在其后面加上省略号。我的建议:使用 truncatechars。 同意上述。这在大多数情况下都是正确的(例如,在不阻碍超链接的情况下显示长 URL)。【参考方案3】:如果你想按单词截断,看看这个 https://docs.djangoproject.com/en/1.4/ref/templates/builtins/#truncatechars
【讨论】:
事实上 - 你在这里链接到“truncatechars”,这正是 OP 要求的(但在 OP 问题被问到后添加)【参考方案4】:使用标准模板标签更简单的方法是:
variable|stringformat:".10s"
在这种情况下,10 是位置参数,对于字符串,它是要显示的最大字符数。
【讨论】:
这对我有用...由于某种原因,“切片”现在不起作用!任何想法,为什么?【参考方案5】:不幸的是,它不存在。如here 所述,有一些措施可以实现它,但它仍处于设计阶段(嗯,已实现,但正在等待设计决策)。
附加到该票证的补丁包含实现。
【讨论】:
【参考方案6】:使用模板过滤器截断文本并不适合响应式设计。因此,您还可以使用 css 截断响应式文本。我知道 OP 要求使用 django 模板过滤器来执行此操作。
您可以使用以下方法实现响应式截断文本:
.class
width: 100%;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
【讨论】:
以上是关于使用 Django 模板过滤器限制字符数的主要内容,如果未能解决你的问题,请参考以下文章