2012-08-10 19 views
11

Django kodunu temizliyorum - IDE, Python kodundaki kullanılmayan değişkenleri kolayca saptayabilir, ancak kullanılmayan şablon değişkenlerini bulmanın bir yolunu bulamadım. bağlam sözlüğünde hangi değerlerin şablonlar tarafından erişilemediğini öğrenebilseydim, görünüm kodunu temizlemek çok daha kolay.Django'da kullanılmayan şablon değişkenleri nasıl bulunur?

Bunun için bir araç var mı?

DÜZENLEME: Ben bir çevrimdışı çözümü, statik kod analiz aracı veya bu tür arıyorum. Aşağıda önerilen paranoid templates çözümü, hiçbir şeyden daha iyi olmakla birlikte, şablonlarda birden fazla {% if ... %} şubesi olduğu için, en uygun değildir, çünkü tüm değişkenleri bulmak için tüm görünümleri (tüm kullanım durumlarında) test etmeyi gerektirir.

+0

[django-debug-toolbar] (https://github.com/django-debug-toolbar/django-debug-toolbar/) buna rağmen Kullanılmayan ve kullanılmayanlar arasında ayrım yapmaz. –

cevap

2

paranoid django templates çözümü deneyin: Sen değişkenleri görebilirsiniz

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

Err .. Bu temelde OP'nin istediğinin tam tersi değil mi? – supervacuo

+0

Ah, çünkü 'paranoid_context_manager' işlevini dahil etmediniz, 'see_keys' işlevini kullanmak için gerekli olan bölüm budur. – supervacuo

+0

Size ödül verdim, ancak yine de daha hoş bir yaklaşım arıyorum. Aracı kendim yaratmam gerekecek galiba. – Kimvais

İlgili konular