代码之家  ›  专栏  ›  技术社区  ›  topless

如何编写多行Jinja语句

  •  74
  • topless  · 技术社区  · 13 年前

    我在Jinja模板中有一个if语句,出于可读性的原因,我想用多项式来写它。考虑一下这个案例

    {% if (foo == 'foo' or bar == 'bar') and (fooo == 'fooo' or baar == 'baar') etc.. %}
    
    1 回复  |  直到 13 年前
        1
  •  123
  •   mechanical_meat nazca    6 年前

    根据文件: https://jinja.palletsprojects.com/en/2.10.x/templates/#line-statements 只要代码周围有括号,就可以使用多行语句。例如:

    {% if ( (foo == 'foo' or bar == 'bar') and 
            (fooo == 'fooo' or baar == 'baar') ) %}
        <li>some text</li>
    {% endif %}
    

    编辑:使用 line_statement_prefix = '#' *代码将如下所示:

    # if ( (foo == 'foo' or bar == 'bar') and 
           (fooo == 'fooo' or baar == 'baar') )
        <li>some text</li>
    # endif
    

    *以下是如何指定 line_statement_prefix 在 Environment :

    from jinja2 import Environment, PackageLoader, select_autoescape
    env = Environment(
        loader=PackageLoader('yourapplication', 'templates'),
        autoescape=select_autoescape(['html', 'xml']),
        line_statement_prefix='#'
    )
    

    或使用烧瓶:

    from flask import Flask
    app = Flask(__name__, instance_relative_config=True, static_folder='static')
    app.jinja_env.filters['zip'] = zip
    app.jinja_env.line_statement_prefix = '#'