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)
前端代码:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> {{ tag }} <br> {{ tag(99,1) }} </body> </html>
或者可以定义一个全局函数,这样就不需要进行传递,可以在全局使用
后端代码:
@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>
5,flask中的模板复用block
前端页面有时候有大量的重复,所以没有必要每次都写重复的代码,可以使用模板复用的方式
{% extend "模板.html" %}
{% block content %}
自己灵活的代码
{% endblock %}
6, 模板语言中的模块引用 include
自己灵活的代码 {% include "模块.html" %} #这一部分是相同的 自己灵活的代码
{{ }} : 引用变量的时候用
{% %} : 逻辑代码的时候用
浙公网安备 33010602011771号