2016-07-21 15 views
0

Nachdem ich Django von 1.8 auf 1.9.8 aktualisiert habe (und auch eine Reihe von Modulen aktualisiert habe), habe ich ein Problem mit meinen Übersetzungen in Templates.Django scheint HTML-Zeichen zu entkommen (aber das ist nicht erlaubt)

Mit dem Foobar Schlüssel mit dem String foo<br>bar verbunden ist, der Code:

<p>{% i18n 'Foobar' %}</p> 

arbeiten groß vor dem Upgrade anzeigt:

foo 
bar 

Aber jetzt, es zeigt:

foo<br>bar 

Irgendeine Idee?

+1

versuchen Sie es mit '' '{% autodescape on%} {% endautoescape%}' ''. Aber abhängig von Ihrem Fall ist das Senden von HTML keine gute Idee. – Bestasttung

+0

Danke! Das hat den Trick gemacht. Ich denke also, der Standardwert für 'autoescape' wurde zwischen v1.8 und v1.9.8 geändert ... – Rodolphe

+0

Also, gibt es eine Möglichkeit,' autoescape' standardmäßig auf 'false' zu ​​setzen, anstatt' {% autoescape off% } 'in allen meinen Vorlagen? – Rodolphe

Antwort

1

OK, dank Bestasttung Kommentar, löste ich mein Problem dabei:

{% autoescape off %} 
<p>{% i18n 'Foobar' %}</p> 
{% endautoescape %} 

Aber das war nicht sehr befriedigend, da ich mehr Vorlagen hatte zu aktualisieren.

def i18n(context, key): 
    ... 
    return s 

zu: Also, habe ich einfach meine i18n Methode geändert

def i18n(context, key): 
    ... 
    return mark_safe(s) 

Ich hoffe, dass jemand helfen wird, das gleiche Problem gegenüber.