2012-08-10 61 views
11

我在做清理的Django的代码 - 我IDE可以很容易地检测未使用的变量等在Python代码,但我还没有找到一种方法来查找未使用的模板变量 - 这将是如果我能够找出上下文字典中的值不被模板访问,则清理视图代码更容易。如何找到未使用的模板变量在Django

是否有这样的工具吗?

编辑:我在寻找一个离线解决方案,静态代码分析工具或此类。虽然paranoid templates解决以下建议是聊胜于无,这是不是最佳的,因为在模板和futhermore多个{% if ... %}分支,将需要为了找到所有未参考的变量测试所有的意见(在所有用例)。

+0

你可以看到变量[Django的调试工具栏(https://github.com/django-debug-toolbar/django-debug-toolbar/),虽然它不区分使用和未使用。 – 2012-08-10 12:11:24

回答

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] 
+0

错误..这是基本的OP想的正好相反,对不对? – supervacuo 2012-08-10 13:21:55

+0

啊,因为你没有包含'paranoid_context_manager'功能,这是必要的部分,实际使用'seen_keys'。 – supervacuo 2012-08-10 13:23:49

+0

我授予你的赏金,但我仍然在寻找一个更好的办法。我想我必须自己创建这个工具... – Kimvais 2012-08-19 13:42:01

相关问题