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

Kim*_*ais 11 django code-cleanup

我正在清理django代码 - 我的IDE可以轻松地检测Python代码中未使用的变量等,但我还没有找到一种方法来查找未使用的模板变量 - 如果可以的话,清理视图代码要容易得多找出模板不能访问上下文字典中的哪些值.

有这个工具吗?

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

Mar*_*mro 2

尝试偏执的 django 模板解决方案:

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]
Run Code Online (Sandbox Code Playgroud)