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 周銳 閱讀(1481) 評論(3)  編輯  收藏 所屬分類: Python
          主站蜘蛛池模板: 垣曲县| 西和县| 长海县| 葵青区| 静乐县| 中西区| 罗定市| 莱州市| 扎兰屯市| 永年县| 桃江县| 武宁县| 崇信县| 道真| 梓潼县| 福泉市| 白朗县| 通道| 错那县| 江安县| 阿克苏市| 芮城县| 伊吾县| 富宁县| 丰顺县| 佳木斯市| 花莲县| 株洲市| 南康市| 阜康市| 长寿区| 光泽县| 花莲县| 英德市| 香港| 盐边县| 晋城| 安阳县| 江陵县| 千阳县| 长白|