如何在Django中找到未使用的模板变量

时间:2012-08-10 11:36:49

标签: django code-cleanup

我正在清理django代码 - 我的IDE可以很容易地在Python代码中检测未使用的变量等,但是我找不到找到未使用的模板变量的方法 - 它会更容易清理如果我可以找出模板没有访问上下文字典中的哪些值,那么可以查看视图代码。

有这个工具吗?

编辑:我正在寻找离线解决方案,静态代码分析工具等。虽然下面建议的paranoid templates解决方案总比没有好,但它不是最优的,因为模板中有多个{% if ... %}分支,而且还需要测试所有视图(在所有用例中)以便查找所有未引用的变量。

1 个答案:

答案 0 :(得分:2)

尝试paranoid django templates解决方案:

class ParanoidContextProxy(object):
    """
    This is a poor-man's proxy for a context instance.

    Make sure template rendering stops immediately on a KeyError.
    """
    def __init__(self, context):
        self.context = context
        self.seen_keys = set()

    def __getitem__(self, key):
        self.seen_keys.add(key)
        try:
            return self.context[key]
        except KeyError:
            raise ParanoidKeyError('ParanoidKeyError: %r' % (key,))

    def __getattr__(self, name):
        return getattr(self.context, name)
    def __setitem__(self, key, value):
        self.context[key] = value
    def __delitem__(self, key):
        del self.context[key]