Jinja: λ Œλ”λ§ν•  ν…œν”Œλ¦Ώμ˜ μš”μ†Œ 사이에 μž‘μ€ λ”°μ˜΄ν‘œλ₯Ό μ‚­μ œν•˜λŠ” Jinja2 NativeEnvironment

에 λ§Œλ“  2019λ…„ 06μ›” 19일  Β·  1논평  Β·  좜처: pallets/jinja

μ˜ˆμƒλ˜λŠ” λ™μž‘

>>> from jinja2 import Template
>>> template = Template("'{{ foo }}', '{{ bar }}', '{{ baz }}'")
>>> template.render(foo='foobar', bar='barbaz', baz='bazfoo')
('foobar', 'barbaz', 'bazfoo')

μ‹€μ œ 행동

>>> from jinja2.nativetypes import NativeEnvironment
>>> e = NativeEnvironment()
>>> t = e.from_string("'{{ foo }}', '{{ bar }}', '{{ baz }}'")
>>> t.render(foo='foobar', bar='barbaz', baz='bazfoo')
'foobar, barbaz, bazfoo'

λ‹Ήμ‹ μ˜ ν™˜κ²½

  • 파이썬 버전: 2.7.5
  • Jinja 버전: 2.10, 2.10.1, ν˜„μž¬ λ§ˆμŠ€ν„°

μœ„μ— λŒ€ν•œ μ„€λͺ…을 μ°ΎμœΌλ €κ³ ν•©λ‹ˆλ‹€. μΈν„°ν”„λ¦¬ν„°μ—μ„œ 이것을 ν…ŒμŠ€νŠΈν•˜μ—¬ Jinja2둜만 쒁히고 jinja2_nativeκ°€ True둜 μ„€μ •λœ Ansibleκ³Ό 같이 ν˜ΈμΆœν•  수 μžˆλŠ” λ‹€λ₯Έ 것은 μ—†μŠ΅λ‹ˆλ‹€.

jinja2_nativeλ₯Ό μ‚¬μš©ν•˜μ§€ μ•Šμ„ λ•Œ μ„Έ 가지 λŒ€μ²΄κ°€ 각 κ°’ μ£Όμœ„μ— μž‘μ€ λ”°μ˜΄ν‘œλ‘œ λ°œμƒν•˜λŠ” 이상 μ˜ˆμƒλ˜λŠ” λ™μž‘μ„ μ–»μŠ΅λ‹ˆλ‹€. jinja2_nativeκ°€ true둜 μ„€μ •λ˜λ©΄(μœ„μ™€ 같이 NativeEnvironmentμ—μ„œ) λ¬Έμžμ—΄μ˜ λ‚΄λΆ€ μž‘μ€λ”°μ˜΄ν‘œκ°€ λ¬΄μ‹œλ˜κ³  단일 λ¬Έμžμ—΄μ΄ μ„Έ 개의 λŒ€μ²΄μ™€ ν•¨κ»˜ λ°˜ν™˜λ©λ‹ˆλ‹€.

이것은 μž‘μ€λ”°μ˜΄ν‘œ 사이에 μΆ”κ°€ λ¬Έμžκ°€ μžˆλŠ” κ²½μš°μ—λ„ λ°œμƒν•©λ‹ˆλ‹€.

>>> e = NativeEnvironment()
>>> t = e.from_string("--foo='{{ foo }}' --bar='{{ bar }}'")
>>> t.render(foo='foobar', bar='barbaz')
u"--foo='foobar --bar=barbaz'"

도움을 μ£Όμ‹œλ©΄ κ°μ‚¬ν•˜κ² μŠ΅λ‹ˆλ‹€.

κ°€μž₯ μœ μš©ν•œ λŒ“κΈ€

이것이 (λ‹€μ†Œ) λ°œμƒν•˜λŠ” μ΄μœ μ— λŒ€ν•œ μ•½κ°„μ˜ λ©”λͺ¨λ₯Ό μΆ”κ°€ν•˜λ €λ©΄: "--foo='{{ foo }}' --bar='{{ bar }}'" ν…œν”Œλ¦Ώμ€ λ‹€μŒ λ…Έλ“œλ‘œ λ‚˜λ‰©λ‹ˆλ‹€.

  1. --foo='
  2. {{ foo }}
  3. ' --bar='
  4. {{ bar }}
  5. '"

λ¬Έμ œλŠ” native_concat 3을 μ²˜λ¦¬ν•  λ•Œ λ°œμƒν•©λ‹ˆλ‹€. ' --bar=' , literal_eval λ¬Έμžμ—΄μ΄ ν‘œμ‹œλ˜κ³  λ”°μ˜΄ν‘œλ₯Ό μ œκ±°ν•˜κ³  μ˜¬λ°”λ₯Έ --bar= 만 λ°˜ν™˜ν•©λ‹ˆλ‹€. 이 μ»¨ν…μŠ€νŠΈ :)

@davidism 생각이

>λͺ¨λ“  λŒ“κΈ€

이것이 (λ‹€μ†Œ) λ°œμƒν•˜λŠ” μ΄μœ μ— λŒ€ν•œ μ•½κ°„μ˜ λ©”λͺ¨λ₯Ό μΆ”κ°€ν•˜λ €λ©΄: "--foo='{{ foo }}' --bar='{{ bar }}'" ν…œν”Œλ¦Ώμ€ λ‹€μŒ λ…Έλ“œλ‘œ λ‚˜λ‰©λ‹ˆλ‹€.

  1. --foo='
  2. {{ foo }}
  3. ' --bar='
  4. {{ bar }}
  5. '"

λ¬Έμ œλŠ” native_concat 3을 μ²˜λ¦¬ν•  λ•Œ λ°œμƒν•©λ‹ˆλ‹€. ' --bar=' , literal_eval λ¬Έμžμ—΄μ΄ ν‘œμ‹œλ˜κ³  λ”°μ˜΄ν‘œλ₯Ό μ œκ±°ν•˜κ³  μ˜¬λ°”λ₯Έ --bar= 만 λ°˜ν™˜ν•©λ‹ˆλ‹€. 이 μ»¨ν…μŠ€νŠΈ :)

@davidism 생각이

이 νŽ˜μ΄μ§€κ°€ 도움이 λ˜μ—ˆλ‚˜μš”?
0 / 5 - 0 λ“±κΈ‰