12

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

有这个工具吗?

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

4

1 回答 1

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]
于 2012-08-10T12:35:49.197 回答