【问题标题】:How to find unused template variables in Django如何在 Django 中查找未使用的模板变量
【发布时间】:2016-10-04 17:57:50
【问题描述】:

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

有这个工具吗?

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

【问题讨论】:

标签: django code-cleanup


【解决方案1】:

尝试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]

【讨论】:

  • Err .. 这基本上与 OP 想要的相反,对吧?
  • 啊,因为你没有包含paranoid_context_manager函数,这是实际使用seen_keys的必要部分。
  • 我奖励了你,但我仍在寻找更好的方法。我想我必须自己创建工具......
猜你喜欢
  • 2011-12-21
  • 1970-01-01
  • 2012-11-13
  • 2019-02-03
相关资源
最近更新 更多