Jinja2模板的控制结构

基本来自《flask web开发》。

1.判断结构 if...else

  • 模板中(user.html):
{% if name %}
        Hello, {{name}}!
{% else %}
        Hello, stranger!
{% endif %}
  • 视图函数中:
return render_template('user.html', name = value)

2.循环结构 for

  • 模板(comment.html):
{% for comment in comments %}
        
  • {{comment}}
  • {% endfor %}

    *视图函数中:

    @app.route('/comment/')
    def comment(number):
        comment_list = range(number)
        return render_template('comment.html', comments = comment_list)
    

    3.宏 macro

    它就是函数,只是写法有点不同

    {% macro funciton(arg) %}
        pass
    {%  endmacro %}
    

    等价于:

    def function(arg):
        pass
    
    • 它可以单独放在一个文件中,然后引用:
    {% import 'macros.html' as func %}
    
    • 而模板的引入:
    {% include 'base.html' %}
    

    「这俩的差异主要在于,import是引入的宏,或者说是代码。」
    「而include则是引入的文件。」

    • 模板继承
    {% exdents '' %}
    

    就是要继承的base.html的路径。本地一般用相对,网络用绝对。

    你可能感兴趣的:(Jinja2模板的控制结构)