2016-11-27 30 views
3

jinja2をテンプレートエンジンとして使用して特定のファイルを生成するスクリプトを作成しています。最後の行を除いて、私が期待するファイルを作成します。テンプレートでは、最後の空行を指定しましたが、ファイルが作成されるとその行はありません。jinja2最後の改行を無視しますか?

テンプレートは次のようになります。

# -*- coding: utf-8 -*- 

from openerp import fields, models, api 


class {{ class_name }}(models.{{ model_type }}): 
    """{{ class_docstring }}""" 

    _{{ def_type }} = '{{ model }}' 
# Here is actually empty line. Note comment does not exist on template. It is just empty line. 

ので、合計でこのテンプレートで定義されている10行があります。しかし、このテンプレートを使用して作成されたファイルは、9行しか持たない(最後の行は作成されません)。

これは予期された動作ですか、または私が期待している最後の行を作成するはずですか?ここで

データおよびレンダリング処理するメソッド:

from jinja2 import Environment, FileSystemLoader 

PATH = os.path.dirname(os.path.abspath(__file__)) 
TEMPLATE_ENVIRONMENT = Environment(
    autoescape=True, 
    loader=FileSystemLoader(os.path.join(PATH, 'templates')), 
    trim_blocks=False) 
... 
... 
    @staticmethod 
    def render_template(t, context): 
     # For now it only supports standard templates. 
     template_filename = TEMPLATE_FILES_MAPPING[t] 
     return TEMPLATE_ENVIRONMENT.get_template(template_filename).render(
      context) 

答えて

0

keep_trailing_newlineオプションは、あなたが探しているものかもしれ:デフォルトでは

、Jinja2のも改行を末尾に削除されます。単一の の改行を維持するには、Jinjaをkeep_trailing_newlineに設定します。

あなたは環境に追加することができ

TEMPLATE_ENVIRONMENT = Environment(
    ... 
    keep_trailing_newline=True) 
関連する問題