Djangoのテンプレートで定数を使う方法(カスタムタグを利用)Part2

以前、「テンプレートで定数を使う方法(カスタムタグを利用)」というメモを書きました。このときは、カスタムタグにて「eval」を使いましたが「getattr」を使っても同じようなことができることがわかりました。

前回)

def my_const(attr):
return eval("const." + attr)

今回)

def my_const(attr):
return getattr("const", attr)

速度的にはgetattrを使った方が速いみたいです。自分の環境にてそれぞれ100,000回繰り返した結果、evalが1554[ms]に対してgetattrが28[ms]でした。

ちなみに、今回使った「getattr」はdefault値を指定することもできます。

例)

return getattr("const", attr, "")

これをすると、属性が存在しなかった場合に発生する「AttributeError」を抑制することができます。ただし、エラーが発生しないことがプラスに働くとは限らないので注意が必要です。明確なdefault値を表示する必要性がない場合は、今回のテンプレートに使う分に関しては、設定しないほうがいいと思います。

この記事が役に立った場合、シェアしていただけると励みになります!!