5

Ich habe Probleme mit {% ifequal s1 "einige Text"%}, um Zeichenfolgen mit erweiterten Zeichen in Django Vorlagen zu vergleichen. Wenn die Zeichenfolge s1 ASCII-Zeichen> 127 enthält, erhalte ich Ausnahmen im Template-Rendering. Was mache ich falsch? Ich verwende UTF-8-Codierung für den Rest der Anwendung in den Daten, Vorlagen und Python-Code ohne Probleme.Problem mit der Codierung in Django Vorlagen

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 %} 

Ausgabe

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

Antwort

8

Manchmal gibt es nichts, wie ein Problem an jemand anderen zu beschreiben Sie es lösen zu helfen. :) Ich hätte die Python-Strings als Unicode so markieren sollen und alles funktioniert jetzt:

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