posts - 431,  comments - 344,  trackbacks - 0
          由于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 周銳 閱讀(1483) 評論(3)  編輯  收藏 所屬分類: Python
          主站蜘蛛池模板: 敦化市| 朝阳县| 定安县| 昭苏县| 秦安县| 临猗县| 民县| 孟村| 仁布县| 永安市| 辽宁省| 黄平县| 通渭县| 澄江县| 丰原市| 东丽区| 澎湖县| 南江县| 中方县| 黄浦区| 北辰区| 华池县| 宾川县| 寻乌县| 西贡区| 泸溪县| 久治县| 旬邑县| 宁安市| 道真| 梨树县| 上饶市| 新邵县| 墨竹工卡县| 社旗县| 德格县| 永登县| 朔州市| 迁安市| 阿图什市| 清苑县|