abstract:Django里有 truncatewords 和 slice 兩個模板過濾器可用于字符截取。truncatewords 不支持中文,所以一般情況下,中文字符截取用 slice 即可。但兩者還是有區(qū)別的,比如有開發(fā)者提及后面的點點點。那么,就有了下面的解決方案,放這里備份。#coding=utf8 from django
Django里有 truncatewords 和 slice 兩個模板過濾器可用于字符截取。truncatewords 不支持中文,所以一般情況下,中文字符截取用 slice 即可。但兩者還是有區(qū)別的,比如有開發(fā)者提及后面的點點點。那么,就有了下面的解決方案,放這里備份。
#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)