ΠΡΠΈ ΡΠ΅Π½Π΄Π΅ΡΠΈΠ½Π³Π΅ ΡΠ°ΠΉΠ»Π°, ΠΊΠΎΡΠΎΡΡΠΉ Π·Π°ΠΊΠ°Π½ΡΠΈΠ²Π°Π΅ΡΡΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠΌ Π½ΠΎΠ²ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ (\ n), Ρ ΠΎΠΆΠΈΠ΄Π°Π» Π±Ρ, ΡΡΠΎ Π²ΠΈΠ·ΡΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ Π²ΡΠ²ΠΎΠ΄ ΡΠ°ΠΊΠΆΠ΅ Π±ΡΠ΄Π΅Ρ Π·Π°ΠΊΠ°Π½ΡΠΈΠ²Π°ΡΡΡΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠΌ Π½ΠΎΠ²ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ. ΠΡΠΎ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠ΅ ΡΠΎΠ³Π»Π°ΡΠ΅Π½ΠΈΠ΅ Π² UNIX-ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΡ ΡΠΈΡΡΠ΅ΠΌΠ°Ρ , ΡΡΠΎΠ±Ρ Π·Π°ΠΊΠ°Π½ΡΠΈΠ²Π°ΡΡ ΡΠ΅ΠΊΡΡΠΎΠ²ΡΠ΅ ΡΠ°ΠΉΠ»Ρ Π·Π°Π²Π΅ΡΡΠ°ΡΡΠΈΠΌ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠΌ Π½ΠΎΠ²ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ.
ΠΠΎΡΠ»Π΅Π΄Π½ΠΈΠΉ ΡΠΈΠΌΠ²ΠΎΠ» Π½ΠΎΠ²ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ ΡΠ΄Π°Π»ΡΠ΅ΡΡΡ ΠΈΠ· Π²ΠΈΠ·ΡΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ Π²ΡΠ²ΠΎΠ΄Π°.
>>> c
u'foo is {{ foo }}\nquux is {{ quux }}\nasdf\n'
>>> t = jinja2.Template(c)
>>> t.render(foo="bar", quux="baz")
u'foo is bar\nquux is baz\nasdf'
>>> s = t.stream()
>>> s.next()
u'foo is \nquux is \nasdf'
>>> s.next()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/home/ifreeman/.local/lib/python2.7/site-packages/jinja2/environment.py", line 1271, in __next__
return self._next()
StopIteration
>>>
ΠΠ΅ΡΠ΅Π΄Π°ΠΉΡΠ΅ keep_trailing_newline=True
Π² Environment
: http://jinja.pocoo.org/docs/api/#jinja2.Environment
Π₯ΠΎΡΠΎΡΠΎ, ΡΠΏΠ°ΡΠΈΠ±ΠΎ Π·Π° ΠΎΡΠ²Π΅Ρ, Ρ Π½Π΅ Π·Π½Π°Π», ΡΡΠΎ ΡΡΠΎ Π±ΡΠ» Π²Π°ΡΠΈΠ°Π½Ρ, Π½ΠΎ ΠΏΠΎΡ ΠΎΠΆΠ΅, ΡΡΠΎ ΡΡΠΎ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ. ΠΠ°ΠΆΠ΅ΡΡΡ ΡΡΡΠ°Π½Π½ΡΠΌ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°ΡΡ, ΡΡΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Ρ ΠΎΡΠ΅Ρ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ Π²Π²ΠΎΠ΄ Π½Π΅ΠΎΠΆΠΈΠ΄Π°Π½Π½ΡΠΌΠΈ ΡΠΏΠΎΡΠΎΠ±Π°ΠΌΠΈ, Π½Π΅ ΠΈΠΌΠ΅ΡΡΠΈΠΌΠΈ Π½ΠΈΡΠ΅Π³ΠΎ ΠΎΠ±ΡΠ΅Π³ΠΎ Ρ ΡΠ·ΡΠΊΠΎΠΌ ΡΠ°Π±Π»ΠΎΠ½Π°. Π€Π°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ, ΠΏΡΠΈΡΠΈΠ½Π°, ΠΏΠΎ ΠΊΠΎΡΠΎΡΠΎΠΉ Ρ Π΄Π°ΠΆΠ΅ ΠΎΡΠΊΡΡΠ²Π°Ρ ΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ, Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ shinto-cli (https://github.com/istrategylabs/shinto-cli) Π΄Π»Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈΠ·Π°ΡΠΈΠΈ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΡΠ°ΠΉΠ»ΠΎΠ² Π² Π·Π°Π΄Π°Π½ΠΈΠΈ ΡΠ±ΠΎΡΠΊΠΈ, ΠΈ Ρ Π·Π°ΠΌΠ΅ΡΠΈΠ», ΡΡΠΎ ΡΡΠΎ Π²ΡΠ²ΠΎΠ΄ΠΈΠ» ΡΠ°ΠΉΠ»Ρ Π±Π΅Π· Π½ΠΎΠ²ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ, ΠΏΠΎΡΡΠΎΠΌΡ, ΠΊΠΎΠ³Π΄Π° Ρ Π΄ΠΎΠ±Π°Π²Π»ΡΡ ΠΊ Π½ΠΈΠΌ, Ρ ΠΌΠ΅Π½Ρ ΡΡΡΠΎΠΊΠΈ ΡΠΆΠΈΠΌΠ°ΡΡΡΡ Π² ΠΎΠ΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠ΅. Π‘Π½Π°ΡΠ°Π»Π° Ρ ΡΠΎΠ±ΠΈΡΠ°Π»ΡΡ ΠΎΡΠΊΡΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Ρ shinto-cli, ΠΏΠΎΠΊΠ° Π½Π΅ ΠΏΡΠΎΡΠΌΠΎΡΡΠ΅Π» ΠΈΡΡ ΠΎΠ΄Π½ΡΠΉ ΠΊΠΎΠ΄, Π° Π·Π°ΡΠ΅ΠΌ ΡΠ°ΠΌ ΠΏΠΎΠΏΡΠΎΠ±ΠΎΠ²Π°Π» Π±Π°Π·ΠΎΠ²ΡΠΉ ΡΠ°Π±Π»ΠΎΠ½ jinja2 ΠΈΠ· python REPL ΠΈ ΠΏΠΎΠ½ΡΠ», ΡΡΠΎ ΡΡΠΎ ΠΏΡΠΎΡΡΠΎ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ jinja2 ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ.
Π― ΠΌΠΎΠ³Ρ ΠΎΡΠΊΡΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Ρ shinto-cli, ΡΡΠΎΠ±Ρ ΠΏΠΎΠΏΡΠΎΡΠΈΡΡ ΠΈΡ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ keep_trailing_newline = True ΠΊΠΎ Π²ΡΠ΅ΠΌ ΡΠ²ΠΎΠΈΠΌ Π²ΡΠ·ΠΎΠ²Π°ΠΌ ΡΡΠ΅Π΄Ρ.
Π‘Π°ΠΌΡΠΉ ΠΏΠΎΠ»Π΅Π·Π½ΡΠΉ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ
Π₯ΠΎΡΠΎΡΠΎ, ΡΠΏΠ°ΡΠΈΠ±ΠΎ Π·Π° ΠΎΡΠ²Π΅Ρ, Ρ Π½Π΅ Π·Π½Π°Π», ΡΡΠΎ ΡΡΠΎ Π±ΡΠ» Π²Π°ΡΠΈΠ°Π½Ρ, Π½ΠΎ ΠΏΠΎΡ ΠΎΠΆΠ΅, ΡΡΠΎ ΡΡΠΎ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ. ΠΠ°ΠΆΠ΅ΡΡΡ ΡΡΡΠ°Π½Π½ΡΠΌ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°ΡΡ, ΡΡΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Ρ ΠΎΡΠ΅Ρ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ Π²Π²ΠΎΠ΄ Π½Π΅ΠΎΠΆΠΈΠ΄Π°Π½Π½ΡΠΌΠΈ ΡΠΏΠΎΡΠΎΠ±Π°ΠΌΠΈ, Π½Π΅ ΠΈΠΌΠ΅ΡΡΠΈΠΌΠΈ Π½ΠΈΡΠ΅Π³ΠΎ ΠΎΠ±ΡΠ΅Π³ΠΎ Ρ ΡΠ·ΡΠΊΠΎΠΌ ΡΠ°Π±Π»ΠΎΠ½Π°. Π€Π°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ, ΠΏΡΠΈΡΠΈΠ½Π°, ΠΏΠΎ ΠΊΠΎΡΠΎΡΠΎΠΉ Ρ Π΄Π°ΠΆΠ΅ ΠΎΡΠΊΡΡΠ²Π°Ρ ΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ, Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ shinto-cli (https://github.com/istrategylabs/shinto-cli) Π΄Π»Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈΠ·Π°ΡΠΈΠΈ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΡΠ°ΠΉΠ»ΠΎΠ² Π² Π·Π°Π΄Π°Π½ΠΈΠΈ ΡΠ±ΠΎΡΠΊΠΈ, ΠΈ Ρ Π·Π°ΠΌΠ΅ΡΠΈΠ», ΡΡΠΎ ΡΡΠΎ Π²ΡΠ²ΠΎΠ΄ΠΈΠ» ΡΠ°ΠΉΠ»Ρ Π±Π΅Π· Π½ΠΎΠ²ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ, ΠΏΠΎΡΡΠΎΠΌΡ, ΠΊΠΎΠ³Π΄Π° Ρ Π΄ΠΎΠ±Π°Π²Π»ΡΡ ΠΊ Π½ΠΈΠΌ, Ρ ΠΌΠ΅Π½Ρ ΡΡΡΠΎΠΊΠΈ ΡΠΆΠΈΠΌΠ°ΡΡΡΡ Π² ΠΎΠ΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠ΅. Π‘Π½Π°ΡΠ°Π»Π° Ρ ΡΠΎΠ±ΠΈΡΠ°Π»ΡΡ ΠΎΡΠΊΡΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Ρ shinto-cli, ΠΏΠΎΠΊΠ° Π½Π΅ ΠΏΡΠΎΡΠΌΠΎΡΡΠ΅Π» ΠΈΡΡ ΠΎΠ΄Π½ΡΠΉ ΠΊΠΎΠ΄, Π° Π·Π°ΡΠ΅ΠΌ ΡΠ°ΠΌ ΠΏΠΎΠΏΡΠΎΠ±ΠΎΠ²Π°Π» Π±Π°Π·ΠΎΠ²ΡΠΉ ΡΠ°Π±Π»ΠΎΠ½ jinja2 ΠΈΠ· python REPL ΠΈ ΠΏΠΎΠ½ΡΠ», ΡΡΠΎ ΡΡΠΎ ΠΏΡΠΎΡΡΠΎ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ jinja2 ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ.
Π― ΠΌΠΎΠ³Ρ ΠΎΡΠΊΡΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Ρ shinto-cli, ΡΡΠΎΠ±Ρ ΠΏΠΎΠΏΡΠΎΡΠΈΡΡ ΠΈΡ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ keep_trailing_newline = True ΠΊΠΎ Π²ΡΠ΅ΠΌ ΡΠ²ΠΎΠΈΠΌ Π²ΡΠ·ΠΎΠ²Π°ΠΌ ΡΡΠ΅Π΄Ρ.