1, jinja2中的模板语言for

{% for foo in g %}

{% endfor %}

2, jinja2模板语言中的if

{% if g %}

{% elif g %}
    
{% else %}
    
{% endif %}

3, 我们如果想从后端传到前端html标签的话,直接传递的话,是传递的字符串,也就是说我们写的是什么,展示的就是什么,并不是以标签的形式展示出来的,所以我们要对传递的内容进行处理,可以从前端和后端两方面入手

  (1),前端 : {{ tag|safe }}  只需要在模板语法中加上一个safe就额可以了

  (2) 后端 :

    tag = "<input type='text' name='user' value='DragonFire'>"

      markup_tag = Markup(tag) # Markup帮助咱们在HTML的标签上做了一层封装,让Jinja2模板语言知道这是一个安全的HTML标签

4, 模板语言也可以传递函数

  在后端写一个函数,传给前段,前端执行的时候跟后端执行方式一样,也可以传参

  后端代码:

from flask import Flask
from flask import render_template
from flask import Markup  # 导入 flask 中的 Markup 模块

app = Flask(__name__)

#定义一个函数,把它传递给前端
def a_b_sum(a,b):
    return a+b

@app.route("/")
def index():
    return render_template("index.html", tag=a_b_sum)


app.run("0.0.0.0", 5000, debug=True)
View Code

  前端代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    {{ tag }}
    <br>
    {{ tag(99,1) }}
</body>
</html>
View Code

或者可以定义一个全局函数,这样就不需要进行传递,可以在全局使用

后端代码:

@app.template_global()  # 定义全局模板函数
def a_b_sum(a, b):
    return a + b

前端代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    {{ a_b_sum(99,1) }}
    <br>
    {{ 1 | a_b_c_sum(197,2) }}
</body>
</html>
View Code

5,flask中的模板复用block

前端页面有时候有大量的重复,所以没有必要每次都写重复的代码,可以使用模板复用的方式

{% extend  "模板.html" %}

{% block content %}

    自己灵活的代码

{% endblock %}

6, 模板语言中的模块引用  include

自己灵活的代码

{% include  "模块.html" %}    #这一部分是相同的

自己灵活的代码

 

 

{{   }}  :  引用变量的时候用

{%  %}  :  逻辑代码的时候用