Jinja: Richtiges Identifier-Tracking

Erstellt am 13. März 2011  ·  3Kommentare  ·  Quelle: pallets/jinja

Derzeit ist das Identifier-Tracking sehr grob und basiert nur darauf, Variablen voranzustellen. Die Idee wäre, einige eindeutige Variablen beizubehalten, die in eindeutige Bezeichner umgeschrieben werden, die auch umgekehrt werden können.

Dies sollte es unnötig machen, locals() im gesamten Code zu verwenden und einige Probleme mit Bezeichnern über Funktionsgrenzen hinweg beheben.

Hilfreichster Kommentar

Dies ist endlich getan.

Alle 3 Kommentare

Woher wissen Sie, dass Sie von diesem Problem betroffen sind? Du bekommst etwas in der Art von "Unbound variable l_SOMETHING" gefunden.

Gerade von #pocoo:

magicbronson: hey mitsuhiko et al., trying to render a Jinja template in a Flask app and getting a very mysterious message: "global name 'l_config' is not defined"
magicbronson: l_config appears nowhere in my code or libraries'
mitsuhiko: magicbronson: that's the scoping bug that i will fix over this summer 
mitsuhiko: {% macro foo() %}{{ config }}{% for config in something_else %}{{config}}{% endfor %}{% endmacro %}
mitsuhiko: something like this triggers the bug currently
mitsuhiko: magicbronson: rename the variable inside of the macro to something else
mitsuhiko: {% set cfg = config %}
mitsuhiko: outside the macro
mitsuhiko: or something

Armins Vorschlag hat das Problem umgangen.

Dies ist endlich getan.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen