Djangoのテンプレートでオブジェクトのダンプを表示
Djangoでテンプレートに渡された(レンダリングされた?)変数をダンプするタグを作った。
たぶん、もっと高機能なやつがどこかにあるんだろうけど、見つからなかった。
使うにはmyapp/templatetags/debug_extra.pyを作って中身を↓にすればOK
# -*- coding: utf-8 -*- from django import template from django.conf import settings register = template.Library() @register.simple_tag def dump(obj): """ 使い方。テンプレートレイヤーで {% load debug_extra %} {% dump obj %} とすると、objの中身がダンプされる。 """ # DEBUGモードでのみ有効 if not settings.DEBUG: return l = dir(obj) dump_data = "dump " + str(obj).replace("<", "<").replace(">", ">") + "<ul>" for name in l: try: v = str(getattr(obj, name)).replace("<", "<").replace(">", ">") if "instance" in v: s = dump(getattr(obj, name)) else: s = "<li><i>" + name + "</i> : " + v + "</li>" dump_data += s except: pass return dump_data + "</ul>"