2010-12-29 14 views
1

UPDATE 2: Das Problem ist überhaupt kein Django-Problem - Python hat definitiv die Charaktere ausgezogen, bevor es nach Django kam. Die Lösung ist die Zeichenfolge als rohMaking Django String-Literale ignorieren

inputs['variable'] = r'{\bf this is code} \\' 

UPDATE zu definieren: Es stellt sich heraus, das ist eine tiefere Frage, als ich auf den ersten Blick dachte - das Problem ist, dass Python die Stringliterale ersetzt, bevor sie jemals django bekommen. Ich werde mehr untersuchen und aktualisieren, wenn ich eine Lösung finde.

Ich benutze Django, um mit LaTeX Vorlagen für die Berichterstellung zu arbeiten, und habe viele Probleme damit, wie Django Teile von Strings ersetzt.

Genauer gesagt habe ich zwei Probleme, wo ich versuche, eine Variable mit Latex-Code einfügen.

Das erste war, dass es HTML-Zeichen, wie das weniger als Symbol, mit ihren HTML-Codes ersetzen würde, die natürlich ein Kauderwelsch für einen LaTeX-Interpreter sind. Ich reparierte dies durch den Kontext Einstellung nie autoescape, etwa so:

c = Context(inputs) 
c.autoescape = False 

Allerdings habe ich immer noch meine zweite Frage haben, das ist, dass Django Stringliterale mit ihren entsprechenden characers ersetzt, so dass eine doppelte Backslash wird \, und \ b wird zu einer Rücktaste. Wie kann ich Django zwingen, diese Zeichen an ihrem Platz zu bleiben, so

inputs['variable'] = '{\bf this is code} \\' 

nicht verstümmelt, wenn ich

{{variable}} 

verwenden Sie es in der django Vorlage zu verweisen?

Antwort

0

Wie in den obigen Updates erwähnt, war es überhaupt kein Problem mit Django - Python interpretierte die Zeichenkettenliterale, bevor die Zeichenkette überhaupt zu Django gelangte. Die Lösung bestand darin, die Zeichenfolge als roh zu definieren.

inputs['variable'] = r'{\bf this is code} \\'