>>> from django.utils.text import Truncator
>>> Truncator("Django template tag to truncate text")
<Truncator: <function <lambda> at 0x10ff81b18>>
>>>Truncator("Django template tag to truncate text").words(3)
u'Django template tag...'
Truncator("Django template tag to truncate text").chars(20)
u'Django template t...'
下面介绍如何在Django模板标签中使用它:
from django import template
from django.utils.text import Truncator
register = template.Library()
@register.filter("custom_truncator")
def custom_truncator(value, max_len, trunc_words=False):
""" Set trunc_words=True to truncate by words instead of by chars."""
truncator = Truncator(value)
return truncator.words(max_len) if trunc_words else truncator.chars(max_len)
9条答案
按热度按时间62lalag41#
如果您继续创建自己的自定义模板标记,请考虑使用原生Django util Truncator。
以下是Truncator实用程序的使用示例:
下面介绍如何在Django模板标签中使用它:
最终你可以在任何Django模板中导入 custom_truncator。
zxlwwiss2#
在Django文档中,内置模板标签和过滤器:截断的
ftf50wuq3#
您应该编写一个自定义模板筛选器:http://docs.djangoproject.com/en/dev/howto/custom-template-tags/#writing-custom-template-filters
看看
truncatewords
是如何在django.utils.text
中构建的gkl3eglg4#
您可以使用类似的代码实现您的目标:
第一个月
其中
NUM_OF_CHARS_TO_TRUNCATE
是要留下的字符数。whlutmcx5#
第一个月
d4so4syb6#
添加一个“截断”过滤器是4年来的一个特性请求,但最终落在了 Backbone.js 上,据我所知https://code.djangoproject.com/ticket/5025-所以我们必须等待下一个版本或使用 Backbone.js 。
v1uwarro7#
这是最近在Django 1.4中添加的。例如:
参见此处的文档
bqf10yzr8#
从1.4版本开始,Django有一个内置的模板标签:
uurv41yg9#
我做了我自己的模板过滤器,添加“...”结束(最后一个字)的(截断)字符串以及: