美文网首页
2.2 Jinja2模版概述

2.2 Jinja2模版概述

作者: yungege | 来源:发表于2019-08-19 11:38 被阅读0次

    Jinja2模版概述

    Jinja2默认已经跟着Flask进行安装了,如果没有被安装到,可以通过pip install Jinja2来进行安装。

    概要:

    Jinja模板是简单的一个纯文本文件(html/xml/csv...),不仅仅是用来产生html文件,后缀名也依照你自己的心情而定。当然,尽量命名为模板正确的文件格式,增加可读性。先看一个简单例子:

    1. <html lang="en">
    2. <head>
    3.    <title>My Webpage</title>
    4. </head>
    5. <body>
    6.     <ul id="navigation">
    7.     {% for item in navigation %}
    8.         <li><a href="{{ item.href }}">{{ item.caption }}</a></li>
    9.     {% endfor %}
    10.    </ul>
    11.
    12.    {{ a_variable }}
    13.    {{ user.name }}
    14.    {{ user['name'] }}
    15.
    16.    {# a comment #}
    17. </body>
    18.</html>
    

    以上示例有需要进行解释:

    • 第12~14行的{{ ... }}:用来装载一个变量,模板渲染的时候,会把这个变量代表的值替换掉。并且可以间接访问一个变量的属性或者一个字典的key。关于点.号访问和[]中括号访问,没有任何区别,都可以访问属性和字典的值。
    • 第7~9行的{% ... %}:用来装载一个控制语句,以上装载的是for循环,以后只要是要用到控制语句的,就用{% ... %}
    • 第14行的{# ... #}:用来装载一个注释,模板渲染的时候会忽视这中间的值。

    属性访问规则:

    1. 比如在模板中有一个变量这样使用:foo.bar,那么在Jinja2中是这样进行访问的:
      • 先去查找foobar这个属性,也即通过getattr(foo,'bar')
      • 如果没有,就去通过foo.__getitem__('bar')的方式进行查找。
      • 如果以上两种方式都没有找到,返回一个undefined
    2. 在模板中有一个变量这样使用:foo['bar'],那么在Jinja2中是这样进行访问:
      • 通过foo.__getitem__('bar')的方式进行查找。
      • 如果没有,就通过getattr(foo,'bar')的方式进行查找。
      • 如果以上没有找到,则返回一个undefined

    url_for

    模版中的url_for跟我们后台视图函数中的url_for使用起来基本是一模一样的。也是传递视图函数的名字,也可以传递参数。
    使用的时候,需要在url_for左右两边加上一个{{ url_for('func') }}

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>知了课堂首页</title>
    </head>
    <body>
        这是从模版中渲染的
    {#    {{ 用来存放变量 }}#}
    {#    {% 用来执行函数或者逻辑代码 %}#}
        <p><a href="{{ url_for('login',ref='/',id='1') }}">登录</a></p>
        <!--http://127.0.0.1:8888/accounts/login/1/?ref=%2F-->
    </body>
    </html>
    

    相关文章

      网友评论

          本文标题:2.2 Jinja2模版概述

          本文链接:https://www.haomeiwen.com/subject/rylssctx.html