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
          主站蜘蛛池模板: 肇源县| 常州市| 玛沁县| 日土县| 子洲县| 三台县| 罗山县| 霍州市| 江华| 芦溪县| 鄂尔多斯市| 安吉县| 长兴县| 嘉鱼县| 平安县| 泰州市| 海南省| 贡山| 武强县| 卢氏县| 西华县| 荔浦县| 建瓯市| 邹平县| 盐城市| 闻喜县| 和林格尔县| 荣成市| 乌拉特前旗| 德化县| 家居| 金沙县| 广东省| 新郑市| 台东市| 海丰县| 湘西| 政和县| 仁寿县| 黎城县| 永德县|