tutorial python3 police jinja python jinja2

python3 - jinja2 cómo eliminar la nueva línea de seguimiento



jinja2 tutorial (4)

Estoy usando jinja 2 para generar un archivo yaml pero parece que no puedo deshacerme de una nueva línea final y el final de un bucle for. Por ejemplo, el siguiente

- request: path: {{ path }} headers: origin: ''somedomain.com'' user-agent: ''agent'' referer: ''some.domain.com'' authority: ''somedomain.com'' querystring: {% for key, value in querystring.items() -%} {{ key }}: ''{{ value }}'' {% endfor %} response: content: file: {{ content }}

me da la salida:

- request: path: /some/path headers: origin: ''somedomain.com'' user-agent: ''agent'' referer: ''somedomain.com'' authority: ''somedomain.com'' querystring: postcode: ''xxxxxx'' houseNo: ''55'' response: content: file: address.json

Con una línea en blanco no deseada adicional después de houseNo. ¿Cómo me deshago de esta línea?




Encontré una manera de resolver este problema:

- request: path: {{ path }} headers: origin: ''somedomain.com'' user-agent: ''agent'' referer: ''some.domain.com'' authority: ''somedomain.com'' querystring: >- {% for key, value in querystring.items() -%} {{ key }}: ''{{ value }}'' {% endfor %} response: content: file: {{ content }}

  • > , | : "clip": mantenga el avance de línea, elimine las líneas en blanco finales.
  • >- , |= : "strip": elimina el avance de línea, elimina las líneas en blanco finales.
  • >+ , |+ : "mantener": mantener el avance de línea, mantener las líneas en blanco al final.

Gracias al post de Steve Bennett : En YAML, ¿cómo puedo romper una cadena en varias líneas?


Puede suprimir la representación de las líneas siguientes:

<% for ... %> <% endfor %> <% if ... %> <% endif %>

estableciendo trim_blocks = True y lstrip_blocks = True en su entorno jinja2. Vea el ejemplo a continuación, información de http://jinja.pocoo.org/docs/dev/templates/#whitespace-control

context = {''querystring'': querystring, ''path'': path, ''content'': content} jinja_env = jinja2.Environment(loader=jinja2.FileSystemLoader(''templates/''), trim_blocks=True, lstrip_blocks=True) print(jinja_env.get_template(''my_template.yaml'').render(context))