Nach dem mako docs about filtering, können Sie die Standardfilter festlegen, die innerhalb Vorlagen angewendet werden, wenn eine neue Template
sowie für die TemplateLookup
zu schaffen (in diesem Fall dies standardmäßig gelten würde für alle Vorlagen, die es schaut nach oben), mit dem default_filters
Argument.
Pylonen verwendet dieses Argument mit TemplateLookup
die Standardeinstellungen für Ihr Projekt zu setzen in der config/environment.py
Datei:
# Create the Mako TemplateLookup, with the default auto-escaping
config['pylons.app_globals'].mako_lookup = TemplateLookup(
directories=paths['templates'],
error_handler=handle_mako_error,
module_directory=os.path.join(app_conf['cache_dir'], 'templates'),
input_encoding='utf-8', default_filters=['escape'],
imports=['from webhelpers.html import escape'])
diesem Grund sollten Sie die Flucht standardmäßig bekommen (was nicht der Fall ist, wenn Sie selbst Mako verwenden). Sie können es also entweder global in der Konfigurationsdatei ändern oder sich nicht auf die Standardsuche verlassen. Beachten Sie, dass Sie dann natürlich explizit einen Filter verwenden sollten, um den Dingen zu entkommen, die es zu umgehen gilt.
Sie können auch mit dem Pylonen Helfer h.literal
, zum Beispiel eine Zeichenfolge „sicher sind“ übergeben, wenn Sie h.literal('This will <b>not</b> be escaped')
an der Vorlage, sagen als Variable spam
genannt passieren würde, könnte man einfach ${spam}
ohne Entkommen verwenden.
Wenn Sie beim Aufruf einer bestimmten Funktion innerhalb einer Vorlage den gleichen Effekt erzielen möchten, muss diese Funktion ein solches Literal zurückgeben oder einen Helfer für diese Funktion bereitstellen, die das Ergebnisaufruft, wenn Sie die Funktion verlassen möchten ursprüngliche Funktion allein. (Oder ich denke, man es auch über einen „Filtern von def“ nennen könnte (siehe gleichen Mako doc wie oben), nicht mit, dass noch experimentiert)
Dies muss in die "Klasse" gehen, die von 'h.some_function_that_outputs_html()' zurückgegeben wird, nehme ich an. – Felix