templat:
{% set foo = "bar" %}
foo - {{ foo }}
{% for i in range(2) %}
for:foo - {{ foo }}
{% set foo = i %}
for:foo - {{ foo }}
{% endfor %}
{{ foo }}
{% block test %}
block:foo - {{ foo }}
{% set foo = "baz" %}
block:foo - {{ foo }}
{% endblock %}
foo - {{ foo }}
hasil:
foo - bar
for:foo - bar
for:foo - 0
for:foo - 0
for:foo - 1
foo - bar
block:foo - bar
block:foo - baz
foo - bar
apa?
Harap buat metode untuk menetapkan variabel global.
Memotong dengan beberapa detail lebih lanjut. Seperti inilah tampilan kode di atas untuk mengetahui apa yang terjadi di dalam:
from jinja2.runtime import LoopContext, TemplateReference, Macro, Markup, TemplateRuntimeError, missing, concat, escape, markup_join, unicode_join, to_string, identity, TemplateNotFound
name = None
def root(context, environment=environment):
...
l_foo = 'bar'
context.vars['foo'] = l_foo
context.exported_vars.add('foo')
yield u'\nfoo - %s\n\n' % (
l_foo,
)
t_1 = l_foo
l_i = missing
for l_i in context.call(l_range, 2):
if 0: yield None
yield u'\n for:foo - %s\n ' % (
l_foo,
)
l_foo = l_i
yield u'\n for:foo - %s\n ' % (
l_foo,
)
l_foo = t_1
l_i = missing
yield u'\n\n'
for event in context.blocks['test'][0](context):
yield event
yield u'\n\nfoo - '
yield to_string(l_foo)
def block_test(context, environment=environment):
l_foo = context.resolve('foo')
if 0: yield None
yield u'\n block:foo - %s\n ' % (
l_foo,
)
l_foo = 'baz'
yield u'\n block:foo - %s\n' % (
l_foo,
)
blocks = {'test': block_test}
debug_info = '2=8&3=12&5=16&6=19&7=21&8=23&11=28&17=31&11=33&12=37&13=39&14=41'
Keterangan lebih lanjut:
Global: http://jinja.pocoo.org/docs/api/#global -namespace
Umum: http://jinja.pocoo.org/docs/templates/#assignments
Implementasi: http://jinja.pocoo.org/docs/api/#jinja2.runtime.Context
Penjelasan bagus lainnya: http://stackoverflow.com/a/3355029/482864
Ada ide?
Ini adalah perilaku yang didokumentasikan.
mitsuhiko,
Kami memiliki masalah yang sama dengan DriverX.
Ya, penggunaan "set" didokumentasikan, tetapi, apakah itu berfungsi?
Contoh kami:
{% set the_var = 'foo' %} {% untuk e dalam elemen %} {% set the_var = 'YA' %} var: {{ the_var }} {%- akhir untuk %} the_var: {{ the_var }}
Hasil:
the_var: YA the_var: YA the_var: foo
Bisakah Anda membantu kami? Terima kasih
http://stackoverflow.com/questions/4870346/can-a-jinja-variables-scope-extend-beyond-in-an-inner-block dan http://stackoverflow.com/questions/9486393/jinja2-change- nilai-dari-variabel-dalam-a-loop
Saya benar-benar tidak mengerti mengapa peretasan itu diperlukan, harus berupa sintaks "var lokal" atau serupa
Salam
Komentar yang paling membantu
mitsuhiko,
Kami memiliki masalah yang sama dengan DriverX.
Ya, penggunaan "set" didokumentasikan, tetapi, apakah itu berfungsi?
Contoh kami:
Hasil:
Bisakah Anda membantu kami? Terima kasih