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 %}
        <li>
            {{comment}}
        </li>
    {% endfor %}

*视图函数中:

@app.route('/comment/<number>')
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 '<path>' %}

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容