2013-05-09 61 views
0

django在使用截断词过滤器截断后,是否有方法将变量中的尾随空格去掉? 也就是说我这样做:删除截断词过滤器之后的空格内容

{{post.body|safe|truncatewords:65}} 

,并最终得到的东西是这样的:

富富富富富富富富...

但是我宁愿没有尾随空间。它应该是这样的:

富富富富富富富富...

有一个内置的方式做到这一点 - 我无法找到一个 - 或者我只是需要做一个定制过滤器?

编辑:

为了记录在案,如果其他人是否有这个问题,你需要编写一个自定义截断功能。当我开始讨论这个时,我意识到django可能会将“......”作为数组中的最终索引并将其与空白区域结合起来。无需编写自定义过滤器,您将永远无法摆脱这一切!

这是我实现截断的,不把空间中的最后一个字和之间...:

在我的模板:

{{post.body|truncate:65|safe}} 

在我templatetags包这样的:

@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功能大概会。但是这看起来并不漂亮,因为在你加入之前会有空白空间!所以如果你喜欢,请使用这个!

回答

1

您需要创建自己的过滤器或直接调用strip方法。

看看这个answer来创建您自己的微调过滤器或此anwser查看使用strip方法的示例。