截断词过滤后删除空格的内容

时间:2013-05-09 01:09:55

标签: python django

在使用截断词过滤器截断变量后,django中是否有一种方法可以从变量中去除尾随空格? 即我这样做:

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

最终得到这样的东西:

Foo foo foo foo foo foo foo foo foo ...

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

Foo foo foo foo foo foo foo foo foo ...

是否有内置的方法来执行此操作 - 我找不到 - 或者我只需要制作自定义过滤器?

编辑:

对于记录,如果其他人遇到此问题,您将需要编写自定义截断函数。正如我所说的那样,我意识到django可能会将“...”作为数组中的最终索引并将其与空白区域连接起来。如果不编写自定义过滤器,您将永远无法摆脱这种情况!

这是我的truncate实现,它没有在最后一个单词和...之间放置空格:

在我的模板中:

{{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 个答案:

答案 0 :(得分:1)

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

请查看此answer以创建自己的修剪过滤器或此anwser以查看使用条带方法的示例。