2010-12-29 29 views
9

django-geliştiricileri listesinde this thread'a göre, sabit bir False parametresini bir Django şablon etiketine geçiremiyorum çünkü bir değişken değil, bir ad olarak ele alınacaktır sabiti.Bir boole parametresini kabul eden Django özel şablon etiketi

Ancak bir şablon etiketi oluşturmak istiyorsam, doğru/yanlış bir parametreye gereksinim duyulursa, (Python'da) oluşturmak için önerilen yol nedir ve (şablonda) şablon etiketini çağırır?

Şablonun içine 1 veya 0 geçirebilirim ve Tamam çalışır, ancak Django şablon yazarlığı şablon yazarlarının bilgisayar programlama bilgisini (örn. 1 == Doğru, 0 = = Yanlış) gerektirmemesi koşuluyla, Bu davayı ele almak için daha uygun bir yol olup olmadığını merak ediyordum. etiket tanımının ve kullanım

Örnek:

@register.simple_tag 
def some_tag(some_string, some_boolean = True): 
    if some_boolean: 
     return some_html() 
    else 
     return some_other_html() 

<!-- Error! False treated as variable name in Request Context --> 
{% some_tag "foobar" False %} 

<!-- Works OK, but is there a better option? --> 
{% some_tag "foobar" 0 %} 
+0

Sorun yok, ayrıca http://stackoverflow.com/questions/4229327 – mpen

cevap

15

Bir süre önce bu soruna karşı geldi ve 1 ve 0 kullanarak basit çözüm olduğu sonucuna geldi.

bir fikir, ilgili adlarını kullanarak şablon bağlamına True ve False ekleyen bir bağlam işlemci eklemek olabilir Ancak: Açıkçası size Django ayarları dosyasında bu bağlam işlemci eklemeniz gerekir Sonra

# projectname/appname/context_processors.py 

def booleans(): 
    return { 
     'True': True, 
     'False': False, 
    } 

:

TEMPLATE_CONTEXT_PROCESSORS += { 
    'projectname.appname.context_processors.booleans', 
} 
+0

Ah görüyoruz. Birisi benim bu soruya şunu önerdi: P – mpen

+1

Muhtemelen 1 ve 0 ile yapışacağım, ama bağlam işlemci çözümünü bilmek gelecekte faydalı olacaktır. Teşekkürler! –

İlgili konular