【发布时间】:2013-05-03 09:30:58
【问题描述】:
在使用 truncate words 过滤器截断变量后,django 有没有办法从变量中去除尾随空格? IE。我这样做:
{{post.body|safe|truncatewords:65}}
最终得到这样的结果:
foo foo foo foo foo foo foo foo ...
但是我宁愿没有那个尾随空格。它应该是这样的:
Foo foo foo foo foo foo foo foo...
是否有内置的方法来做到这一点 - 我找不到 - 还是我只需要制作一个自定义过滤器?
编辑:
作为记录,如果其他人遇到此问题,您将需要编写自定义截断函数。当我这样做时,我意识到 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 函数可能会这样做。但这看起来并不漂亮,因为当你加入时,它前面会有空白!喜欢就用这个吧!
【问题讨论】: