私はjinja 2を使用してyamlファイルを出力していますが、末尾の改行とforループの終わりを取り除くことができないようです。例えば、以下
- 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 }}
私に出力を与えます:
- 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
HouseNoの後に追加の不要な空白行があります。この行を削除するにはどうすればよいですか?
ループを変更して、出力の上部と下部から空白を削除します(forループのクローズで余分な「-」に注意してください)。
{% for key, value in querystring.items() -%}
{{ key }}: '{{ value }}'
{%- endfor %}
私のテストでは( https://github.com/abourguignon/jinja2-live-parser を使用)、「-」は最初の{%
、あなたが求めていることを達成する最後の前ではありません。
ドキュメント: http://jinja.pocoo.org/docs/dev/templates/#whitespace-control
whitespace control 機能を使用してそれを取り除くことができると思います。したがって、endfor
ブロックを{% endfor -%}
に変更します
それがそれを行うかどうかを確認してください!
この問題を解決する方法を見つけました。
- 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 }}
>
、|
: "クリップ":改行を保持し、末尾の空白行を削除します。>-
、|=
: "strip":改行を削除し、末尾の空白行を削除します。>+
、|+
: "keep":改行を保持し、末尾の空白行を保持します。ThxSteve Bennettの投稿: YAMLでは、文字列を複数行に分割するにはどうすればよいですか?
Flaskここに到着した人を使用している人のために、これらの行は私のためにトリックをしました:
app = Flask(__name__)
app.jinja_env.lstrip_blocks = True
app.jinja_env.trim_blocks = True
以下の行のレンダリングを抑制できます。
<% for ... %>
<% endfor %>
<% if ... %>
<% endif %>
jinja2環境でtrim_blocks = Trueおよびlstrip_blocks = Trueを設定します。次の例を参照してください their docs からの情報
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))