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
          主站蜘蛛池模板: 翼城县| 华安县| 宜昌市| 阳信县| 河南省| 崇仁县| 休宁县| 禄丰县| 专栏| 黑水县| 新宁县| 长泰县| 沾益县| 绥芬河市| 惠来县| 万山特区| 易门县| 蓬溪县| 吉木乃县| 平罗县| 高密市| 赤城县| 达拉特旗| 西盟| 璧山县| 西华县| 运城市| 临洮县| 雅江县| 大庆市| 永昌县| 鄂州市| 绿春县| 太湖县| 通渭县| 长治县| 封开县| 苍溪县| 策勒县| 定襄县| 讷河市|