عند تقديم ملف ينتهي بحرف سطر جديد (\ 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 لجميع مكالمات البيئة الخاصة بهم.