5

Django şablonlarında genişletilmiş karakterli dizeleri karşılaştırmak için {% ifequal s1 "metnini"%} kullanarak sorun yaşıyorum. Dize s1 ascii karakterleri> 127 içeriyorsa, şablon oluşturmada istisnalar alıyorum. Neyi yanlış yapıyorum? Her iki veri, şablon ve Python kodunda herhangi bir problem yaşamadan UTF-8 kodlamasını kullanıyorum.Django şablonlarında kodlamada sorun var

views.py

def test(request): 
    return render_to_response("test.html", { 
              "s1": "dados", 
              "s2": "aprovação", 
              } 
          ) 

test.html

s1={{s1}}<br> 
s2={{s2}}<br> 

{% ifequal s1 "dados" %} 
    s1="dados" is true 
{% endifequal %} 

{% ifequal s1 "aprovação" %} 
    s1="aprovação" is true 
{% endifequal %} 

{% comment %} 
The following two comparions cause the following exception: 
Caught an exception while rendering: 'ascii' codec can't decode byte 0xc3 in position 6: ordinal not in range(128) 

{% ifequal s2 "dados" %} 
    s2="dados" is true 
{% endifequal %} 

{% ifequal s2 "aprovação" %} 
    s2="aprovação" is true 
{% endifequal %} 
{% endcomment %} 

{% ifequal s2 u"dados" %} 
    s2="dados" is true 
{% endifequal %} 

{% comment %} 
The following comparison causes the following exception: 
Caught an exception while rendering: 'ascii' codec can't encode characters in position 8-9: ordinal not in range(128) 
{% ifequal s2 u"aprovação" %} 
    s2="aprovação" is true 
{% endifequal %} 
{% endcomment %} 

Çıktı

s1=dados 
s2=aprovação 
s1="dados" is true 

cevap

8

Bazen bunu çözmeye yardımcı olmak için başkasına bir sorun açıklayan gibi bir şey yok. :) Bu gibi Unicode gibi Python dizelerini işaretlemeliydim ve şimdi her şey çalışıyor:

def test(request): 
    return render_to_response("test.html", { 
              "s1": u"dados", 
              "s2": u"aprovação", 
              } 
          ) 
İlgili konular