Flask框架(二)模板引擎JinJa2

文章目录

  • 一.什么是JinJa2模板
  • 二.JinJa2语法
    • 1.Jinja2变量显示语法
    • 2.Jinja2变量内置过滤器
    • 3.如何自定义过滤器
    • 4.for循环
    • 5.if语句
  • 三.宏操作
    • 1.如何定义宏?
    • 2.如何调用宏?
    • 3.include包含操作
    • 4.模板的继承

一.什么是JinJa2模板

Jinja2 是一个现代的,设计者友好的,仿照 Django 模板的 Python 模板语言。 它速度快,被广泛使用,并且提供了可选的沙箱模板执行环境保证安全:

  • python的Web开发中, 业务逻辑(实质就是视图函数的内容)和页面逻辑(html件)分开的, 使得代码的可读性增强, 代码容易理解和维护;
  • 模板渲染: 在html文件中,通过动态赋值 ,将重新翻译好的html文件(模板引擎生效) 返回给用户的过程。
  • 其他的模板引擎: Mako, Template, Jinja2
    官方网址: http://docs.jinkan.org/docs/jinja2/

二.JinJa2语法

1.Jinja2变量显示语法

{{ 变量名| 函数调用 }}

{{ name }}
{{ url_for() }}
{{ get_flshed_messages() }}

2.Jinja2变量内置过滤器

“hello”.lower()

  • 完整的过滤器查看位置: http://jinja.pocoo.org/docs/templates/#builtin-filters
safe            渲染值时不转义
capitalize      把值的首字母转换成大写,其他字母转换成小写
lower           把值转换成小写形式
upper           把值转换成大写形式
title           把值中每个单词的首字母都转换成大写
trim            把值的首尾空格去掉
striptags       渲染之前把值中所有的 HTML 标签都删掉     

3.如何自定义过滤器

# 例如自定义一个列表反转的过滤器
@app.template_filter("listreverse")
def do_listreverse(li):
    li.reverse()
    return li

4.for循环

{% for i in li%}
     xxx
 {% endfor %}        

5.if语句

{% if user == 'westos'%}
    xxxx
{% elif user == 'hello' %}
    xxx
{% else %}
    xxx
{% endif%}

三.宏操作

宏相当于函数

1.如何定义宏?

  
 {%  macro render(id) %}
	   

hello world {{ id }}

{% endmacro %}

2.如何调用宏?


{{ render(1) }}
{{ render(2) }}
{{ render(3) }}

3.include包含操作

{% include  "06_inclued.html"%}

4.模板的继承

一般网站的导航栏和底部不会变化, 为了避免重复编写导航栏信息;

  • 如何定义模板?



    
    {% block title %}  {% endblock %}


这是导航栏
{% block body %} hello {% endblock %}
这是底部
  • 如何继承基模板?
{% extends  '06_base.html'%}
{% block title %}
    继承案例
{% endblock %}
{% block body %}
这是最新填的block内容
{% endblock %}

你可能感兴趣的:(Flask框架)