Flask jinja2模板

Python Flask JIJIA2模板渲染

A.Flask渲染Jinja2模板和模板传参

  1. 如何渲染模板:
    • Flask模板放在templates文件夹下面
    • flask中导入render_template函数
    • 在视图函数中,使用render_template函数,渲染模板。注意:只需要填写模板的名字,不需要填写templates这个文件夹的路径
  2. 模板传参:
    • 如果只有一个或者少数参数,直接在render_template函数中添加关键字参数就可以了
    • 如果有多个参数的时候,那么可以先把所有的参数放在字典中,然后在render_template中,使用两个星号**,把字典转换成关键字参数传递进去,这样的代码更方便管理和使用
  3. 在模板中,如果要使用一个变量,语法是:{{params}}
  4. 访问模型中的属性或者是字典,可以通过{{params.property}}的形式,或者是使用{{params['age']}}的形式

B.控制语句

所有的控制语句都是放在{%...%}中,并且有一个语句{% end xxx%}来进行结束,Jinja中常用的控制语句有if/for ...in...

  1. if判断

    if语句和python中的类似,可以使用>,<,<=,>=,==,!=来进行判断,也可以通过and,or,not,()来进行逻辑合并操作

    {% if xxx %}
    {% else %}
    {% end if %}
    
  1. for循环遍历列表和字典

    • 字典的遍历,语法和python一样,可以使用items(),keys(),values(),iteritems(),iterkeys(),itervalues()

      {% for k,v in user.items()%}
      

      {{k}}:{{v}}

      {% endfor %}
    • 字典的遍历,语法和python一样

      {% for website in websites %}
      

      {{website}}

      {% endfor %}

C.过滤器

  1. 介绍与语法:

    • 介绍:过滤器可以处理变量,把原始的变量经过处理后是再展示出来,作用的对象是变量。

    • 语法:

      {{avatar|default('xxx')}}
      
      1. default过滤器:如果当前变量不存在,这时候可以指定默认值
      2. length过滤器,求列表或者字符串或者字典或者元组的长度

过滤器其实本身就是一个函数,只不过是放在模板当中使用而已

D.继承与使用block

  1. 继承作用和语法:

    • 作用:可以把一些公共的代码放在父模板中,避免每个模板写同样的代码。

    • 语法:

      {%extends 'base.html'%}
      # extends 指令声明这个模板衍生自base.html
      

    2.block实现:

  • 作用:可以让子模板实现一些自己的需求,父模板需要提前定义好接口。
  • 注意点:子模板中的代码,必须要放在block块中。

E.URL链接和加载静态文件

1. url链接:使用`url_for(视图函数名称)`可以反转成URL

2. 静态文件,flask会从`static`文件夹中开始寻找,所以不需要再写`static`这个路径了

3. 可以加载`css`文件,`js`,还有`image`文件

   ```html
   
   
   
   
   
   
   
   ```

你可能感兴趣的:(Flask jinja2模板)