由于django提供的truncatewords對漢字不支持,而slice可以截取,但不能滿足需求。
即,如果我截取文本前50個文字,如果文本沒有那么多,則全部顯示,如果文本字數大于50,則需要在截取后面加上三個點。
這時需要自己來寫一個filter了,其實直接把slice代碼修改一下就可以了:
#coding=utf8
from django.template import Library
from django.template.defaultfilters import stringfilter
register = Library()
@stringfilter
def truncatehanzi(value, arg):
"""
Truncates a string after a certain number of words including
alphanumeric and CJK characters.
Argument: Number of words to truncate after.
"""
try:
bits = []
for x in arg.split(u':'):
if len(x) == 0:
bits.append(None)
else:
bits.append(int(x))
if int(x) < len(value):
return value[slice(*bits)] + '...'
return value[slice(*bits)]
except (ValueError, TypeError):
return value # Fail silently.
register.filter('truncatehanzi', truncatehanzi)
posted on 2009-04-09 22:47
周銳 閱讀(1481)
評論(3) 編輯 收藏 所屬分類:
Python