Jinja: Nachgestellter Zeilenumbruch wird beim Rendern aus der Vorlage entfernt.

Erstellt am 2. Mai 2018  ·  2Kommentare  ·  Quelle: pallets/jinja

Erwartetes Verhalten

Beim Rendern einer Datei, die mit einem Newline-Zeichen (\n) endet, würde ich erwarten, dass die gerenderte Ausgabe auch mit einem Newline-Zeichen endet. Es ist eine Standardkonvention auf UNIX-ähnlichen Systemen, Textdateien mit einem abschließenden Zeilenumbruch zu beenden.

Tatsächliches Verhalten

Der letzte Zeilenumbruch wird aus der gerenderten Ausgabe entfernt.

Beispiel

>>> 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
>>>

Ihre Umgebung

  • Python-Version: 2.7.14+ (Debian-Buster/Testing)
  • Jinja-Version: 2.10 (über Pip)

Hilfreichster Kommentar

Ok, danke für die Antwort, ich wusste nicht, dass dies eine Option ist, aber es scheint, als ob dies die Standardeinstellung sein sollte. Es erscheint seltsam anzunehmen, dass der Benutzer die Eingabe auf unerwartete Weise ändern möchte, die nichts mit der Vorlagensprache zu tun hat. Tatsächlich öffne ich dieses Problem sogar, weil ich shinto-cli (https://github.com/istrategylabs/shinto-cli) verwende, um einige Dateien in einem Build-Job zu parametrisieren, und mir ist aufgefallen, dass es gab Dateien ohne Zeilenumbrüche aus, also wenn ich an sie anhänge, habe ich Zeilen in einer Zeile zusammengequetscht. Zuerst wollte ich ein Problem mit shinto-cli eröffnen, bis ich die Quelle durchgesehen habe, und dann selbst eine grundlegende jinja2-Vorlage aus der Python-REPL ausprobiert habe und festgestellt habe, dass dies nur das Standardverhalten von jinja2 ist.

Ich kann ein Problem mit shinto-cli öffnen, um zu bitten, dass sie die Option keep_trailing_newline=True zu allen ihren Umgebungsaufrufen hinzufügen.

Alle 2 Kommentare

Übergeben Sie keep_trailing_newline=True an die Environment : http://jinja.pocoo.org/docs/api/#jinja2.Environment

Ok, danke für die Antwort, ich wusste nicht, dass dies eine Option ist, aber es scheint, als ob dies die Standardeinstellung sein sollte. Es erscheint seltsam anzunehmen, dass der Benutzer die Eingabe auf unerwartete Weise ändern möchte, die nichts mit der Vorlagensprache zu tun hat. Tatsächlich öffne ich dieses Problem sogar, weil ich shinto-cli (https://github.com/istrategylabs/shinto-cli) verwende, um einige Dateien in einem Build-Job zu parametrisieren, und mir ist aufgefallen, dass es gab Dateien ohne Zeilenumbrüche aus, also wenn ich an sie anhänge, habe ich Zeilen in einer Zeile zusammengequetscht. Zuerst wollte ich ein Problem mit shinto-cli eröffnen, bis ich die Quelle durchgesehen habe, und dann selbst eine grundlegende jinja2-Vorlage aus der Python-REPL ausprobiert habe und festgestellt habe, dass dies nur das Standardverhalten von jinja2 ist.

Ich kann ein Problem mit shinto-cli öffnen, um zu bitten, dass sie die Option keep_trailing_newline=True zu allen ihren Umgebungsaufrufen hinzufügen.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen