在使用截断词过滤器截断变量后,django 中有没有办法从变量中去除尾随空格?即我这样做:
{{post.body|safe|truncatewords:65}}
最终得到这样的东西:
呜呜呜呜呜呜呜呜呜
但是我宁愿没有那个尾随空间。它应该如下所示:
呜呜呜呜呜呜呜呜呜呜
有没有内置的方法来做到这一点 - 我找不到 - 还是我只需要制作一个自定义过滤器?
编辑:
作为记录,如果其他人遇到此问题,您将需要编写自定义截断函数。当我这样做时,我意识到 django 可能正在将“...”作为数组中的最终索引并将其与空格连接起来。如果不编写自定义过滤器,您将永远无法摆脱它!
这是我的 truncate 实现,它在最后一个单词和 ... 之间没有空格:
在我的模板中:
{{post.body|truncate:65|safe}}
在我的模板标签包中:
@register.filter
@stringfilter
def truncate(value,end):
words = value.split()
keep = words[0:end]
keep[end-1] = keep[end-1]+"..."
return " ".join(keep)
有用!如您所见,制作起来很容易
keep[end] = "..."
我认为 truncatewords 函数可能就是这样做的。但这看起来并不漂亮,因为当您加入时,它前面会有空白!所以如果你喜欢就用这个吧!