(旧) kano-e no memo

こっちは更新してません

組込みフィルタを一通り使ってみる(1)

ちまちま処理を書いた後に、そのまんまな組込みフィルタがあることを知ってがっくり、なんてことを繰り返していたので、本気でドキュメントを読もうと組込みフィルタの一覧をプリントアウトしたら、思っていたのよりも数が多くて、戸惑い気味です。
さらっと目を通すと、「こんな便利なものがあるなら先に言ってよ」なものから「これ、何に使うの?」ってものまであるようなので、とりあえず一通り試すことにしました。

add

1 add 2 eq :{{ 1|add:2 }}

1 add 2 eq :3

addslashes

JavaScriptへ渡す時に使う用らしい
後回し

capfirst

test capfirst :{{ "test"|capfirst }}

test capfirst :Test

center

{{ "test"|center:20 }}

HTML上ではスペースは意味ないので表示に変化はなし。
ソースを見ると、前後にスペースが入っているのがわかる。
Webアプリケーション構築目的では多分使わない機能。

cut

test cut t :{{ "test"|cut:"t" }}
<br>
test cut e :{{ "test"|cut:"e" }}

test cut t :es
test cut e :tst

date

dt : {{ dt }}
<br>
dt date "y年n月j日 G時i分" : {{ dt|date:"y年n月j日 G時i分" }}

dt : 1987-06-05 04:32:10
dt date "y年n月j日 G時i分" : 87年6月5日 4時32分

default

defined = u"定義済"
datanone = None
defined : {{ defined|default:"未定義" }}
<br>
datanone : {{ datanone|default:"未定義" }}
<br>
undefined : {{ undefined|default:"未定義" }}

defined : 定義済
datanone : 未定義
undefined : 未定義

default_if_none

defined = u"定義済"
datanone = None
defined : {{ defined|default_if_none:"不明" }}
<br>
datanone : {{ datanone|default_if_none:"不明" }}
<br>
undefined : {{ undefined|default_if_none:"不明" }}

defined : 定義済
datanone : 不明
undefined :

discsort

  list = (
    { 'name' = 'aaa',
      'type' = 8,
      'age' = 25 },
    { 'name' = 'bbb',
      'type' = 2,
      'age' = 28 },
    { 'name' = 'ccc',
      'type' = 7,
      'age' = 18 },
  )
list discsort name :{{ list|dictsort:"name" }}
<br>
list discsort type :{{ list|dictsort:"type" }}
<br>
list discsort age :{{ list|dictsort:"age" }}

list discsort name :[{'age': 25, 'type': 8, 'name': 'aaa'}, {'age': 28, 'type': 2, 'name': 'bbb'}, {'age': 18, 'type': 7, 'name': 'ccc'}]
list discsort type :[{'age': 28, 'type': 2, 'name': 'bbb'}, {'age': 18, 'type': 7, 'name': 'ccc'}, {'age': 25, 'type': 8, 'name': 'aaa'}]
list discsort age :[{'age': 18, 'type': 7, 'name': 'ccc'}, {'age': 25, 'type': 8, 'name': 'aaa'}, {'age': 28, 'type': 2, 'name': 'bbb'}]

{% for line in list|dictsort:"age" %}
<p>
  {{ line.age }} : {{ line.name }}
</p>
{% endfor %} 

18 : ccc

25 : aaa

28 : bbb

dictsortreversed

{% for line in list|dictsortreversed:"age" %}
<p>
  {{ line.age }} : {{ line.name }}
</p>
{% endfor %} 

28 : bbb

25 : aaa

18 : ccc

divisibleby

5 / 3 :{{ 5|divisibleby:3 }}
<br>
5 / 5 :{{ 5|divisibleby:5 }}

5 / 3 :False
5 / 5 :True

5 / 3 :
{% if 5|divisibleby:3 %}
OK
{% else %}
NG
{% endif %}

5 / 3 : NG

escape

{{ "<script>hoge&huga</script>"|escape }}

&lt;script&gt;hoge&amp;huga&lt;/script&gt;

わかりやすく表示するために、結果をさらにエスケープさせてます
[']と["]もエスケープされる

filesizeformat

{{ 648|filesizeformat }}
<br>
{{ 30192|filesizeformat }}
<br>
{{ 5901248|filesizeformat }}
<br>
{{ 1395901248|filesizeformat }}

648 bytes
29.5 KB
5.6 MB
1.3 GB

first

list = (
  'a',
  'b',
  'c',
)
{{ list|first }}

a

fix_ampersands

{{ "a=1&b=2"|fix_ampersands }}

a=1&amp;b=2

わかりやすく表示するために、結果をさらにエスケープさせてます

floatformat

12 floatformat default :{{ 12|floatformat }}
<br>
12.345 floatformat default :{{ 12.345|floatformat }}
<br>
12.35 floatformat default :{{ 12.35|floatformat }}
<br>
12.351 floatformat default :{{ 12.351|floatformat }}

12 floatformat default :12
12.345 floatformat default :12.3
12.35 floatformat default :12.3
12.351 floatformat default :12.4

12 floatformat 0 :{{ 12|floatformat:0 }}
<br>
12 floatformat 1 :{{ 12|floatformat:1 }}
<br>
12 floatformat 5 :{{ 12|floatformat:5 }}
<br>
12.345 floatformat 0 :{{ 12.345|floatformat:0 }}
<br>
12.345 floatformat 1 :{{ 12.345|floatformat:1 }}
<br>
12.345 floatformat 2 :{{ 12.345|floatformat:2 }}
<br>
12.345 floatformat 5 :{{ 12.345|floatformat:5 }}

12 floatformat 0 :12
12 floatformat 1 :12.0
12 floatformat 5 :12.00000
12.345 floatformat 0 :12
12.345 floatformat 1 :12.3
12.345 floatformat 2 :12.35
12.345 floatformat 5 :12.34500

12 floatformat -0 :{{ 12|floatformat:"-0" }}
<br>
12 floatformat -1 :{{ 12|floatformat:"-1" }}
<br>
12 floatformat -5 :{{ 12|floatformat:"-5" }}
<br>
12.345 floatformat -0 :{{ 12.345|floatformat:"-0" }}
<br>
12.345 floatformat -1 :{{ 12.345|floatformat:"-1" }}
<br>
12.345 floatformat -2 :{{ 12.345|floatformat:"-2" }}
<br>
12.345 floatformat -5 :{{ 12.345|floatformat:"-5" }}

12 floatformat -0 :12
12 floatformat -1 :12
12 floatformat -5 :12
12.345 floatformat -0 :12
12.345 floatformat -1 :12.3
12.345 floatformat -2 :12.35
12.345 floatformat -5 :12.34500

引数のデフォルトは"-1"