最近のトラックバック

スポンサード リンク


  • Google
    Web sketch.txt-nifty.com

リンク

« mixiアプリでOpenSocial-JQueryのPeopleオブジェクトから取れるもの一覧 | トップページ | VexFlow使ってみた »

GAE上のdjangoで日本語版truncateを作る

 何も完成させないままmixiアプリにも飽き、いまの趣味プログラミングはGoogle App Engineです。
 データストアとかdjangoとかすごく便利!と思ってたんですが、truncatewordsが全く日本語向きでなかったのでカスタムフィルタを作ることにしました。
 カスタムフィルタの追加の仕方自体はこちらのページが分かりやすかったです

from django import template
import string

register = template.Library()

# 文字列をarg文字以内に切り詰める。超えた場合は末尾を'…'にする。
@register.filter
def truncatejp(value, arg):
  value = value.strip()
  if len(value) <= arg:
    return value
  arg -= 1
  return value[:arg].strip() + u'…'

# truncatejpと同じだが、文字数ゼロのときはTABLEタグ用に<br />を返す。
@register.filter
def truncatejp_br(value, arg):
  if len(value) == 0:
    return '<br />'
  ret = truncatejp(value, arg)
  ret = ret.replace('&', '&amp;')
  ret = ret.replace('<', '&lt;')
  ret = ret.replace('>', '&gt;')
  ret = ret.replace('\'', '&apos;')
  ret = ret.replace('"', '&quot;')
  return ret
truncatejp_br.is_safe = True

 自力でescapeしてるのが何ともカッコ悪いです…。もうちょいスマートに書けないもんですかね。

« mixiアプリでOpenSocial-JQueryのPeopleオブジェクトから取れるもの一覧 | トップページ | VexFlow使ってみた »

アプリ」カテゴリの記事

コメント

はじめまして、Django本家のtruncate_wordsではHTMLのエスケープしてないですよ(truncate_wordsもtruncatewords_htmlも)

以下のリンクはtruncate_wordsに似せて作ったものですが、よかったらどうぞ。

http://www.hashnote.tk/2010/may/19/truncate-words-for-japanese/

はじめまして。
そうなんですか!
わざわざありがとうございます。
そしてそちらのコードのほうが明らかに凝ってますね…。こちらDjango初心者なので参考にさせていただきます。

この記事へのコメントは終了しました。

トラックバック


この記事へのトラックバック一覧です: GAE上のdjangoで日本語版truncateを作る:

« mixiアプリでOpenSocial-JQueryのPeopleオブジェクトから取れるもの一覧 | トップページ | VexFlow使ってみた »

ブログパーツ



2021年7月
        1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
無料ブログはココログ