safeが必要ないオブジェクトを作る。
djangoのテンプレートの話。
カスタムタグやフィルタ以外で、safeをつける必要がないオブジェクトを作りたい。
formのような。
{{form.as_p}}
はできるけれど、自分で作った以下のようなオブジェクトはsafeをつける必要がある。
class A(str): def as_p(self): return "<p>%s</p>" % self
使う時こうしなければならない。
{{a.as_p|safe}}
django.utils.safestring.mark_safeを使えば良いらしい。
from django.utils.safestring import mark_safe class A(str): def as_p(self): return mark_safe("<p>%s</p>" % self)
これで、以下のように書ける。
{{a.as_p}}