Flask jinja2 模板2019-08-17

1.渲染模板

    为了让程序业务逻辑和表现逻辑分离,所以将html文件提取出来单独存放在templates目录下,通过flask提供的render_template('index.html', dict)函数将模板html进行渲染,而不能再使用字符串格式化或字符串拼接的方式为html插入变量。

    jinja2模板类型可以是任何格式的纯文本文件:HTML,XML,CSV,LaTex

2.模板语法

    Jinja2的定界符:

        {% %} -->添加if 或 for语句

        {{     }}-->添加的表达式(如:字符串、变量、函数)

        {# 注释 #}

    模板的继承

        {% extends ‘base.html’%}--->放在子模板的第一个标签位置

        {% block content %}  在父模板中木效果,在子模板中书写标签会覆盖父模板中标签;如果要在父模板的基础上添加内容,在块中第一行添加 {{ super() }}  {% endblock %}

        块可以为head、title、style、content、footer、script

        {% include '_nanner.html' %}-->局部模板以下划线开头,功能:插入局部模板内容

    Jinja2允许在模板中使用大部分的python对象

3.在模板中定义变量

    {% set navigation = [('/', 'Home'), ('/about', 'About')] %}

    {% set navigation %}

       

  • Home
  •          

  • About
  •     {% endset %}

    4.模板宏

    定义宏函数和调用宏函数

    5.过滤器

        jinja2内置的过滤器:https://www.jianshu.com/p/34910739251e

        自定义模板过滤器:https://www.cnblogs.com/chichung/p/9775099.html

    6.测试器

         jinja2内置的测试器:http://www.ttlsa.com/python/flask-jinja2-template-engine-test/

    7.url_for()函数的使用

        功能:用来获取URL

        在html中,添加为a标签的href,可改变html的显示:url_for('index') 传入的参数为视图函数的端点

        导入静态文件:url_for('static', filename='xx.jpg') 或使用宏导入静态资源

        作为从定向的参数:redirect(url_for('index'))

    8.使用css框架

        从CDN加载静态文件可以调高服务器的访问效率,使用bootstrap时,css在头部导入,js建议在body结尾导入,导入js的顺序为jquery-->popper-->bootstrap

    9.消息闪现

        在视图函数中设置:flash(u'Hello Flask')

        在模板中渲染flash消息

    通过get_flashed_message()函数获得闪现消息内容

    10.自定义错误页面

        错误处理函数需要附加@app.errorhandler(404)装饰器,并传入错误状态码作为参数。

    flask的装饰器使用

    11.在模板中自定义css和js

        只有使用render_template()传入的模板文件才会被渲染,单独的js或css文件,即使被引用到html中也不会被执行。

        解决方法1:在行内嵌入js或css(修改不方便)

        解决办法2:定义js或css变量(尚不清楚用法)

    你可能感兴趣的:(Flask jinja2 模板2019-08-17)