前言
本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理。
PS:如有需要Python学习资料的小伙伴可以加点击下方链接自行获取 python免费学习资料以及群交流解答点击即可加入
1、模板的使用Flask使用的是Jinja2模板,所以其语法和Django无太大差别 Flask中模板里面,执行函数时,需要带()才执行
1.为了防止xss攻击,加了验证,所以页面上显示字符串的形式,解决办法,有两种方法 方法一:在后端使用Markup,等价于Django里的mark_safe
v = Markup("")
方法二:在前端使用safe
{{ v1|safe }}
2.静态文件的两种导入方式 目录结构: 方式一:
方式二:
3.flask中模板语法不提示,解决办法
点击选择jinja2
Flask中自定义模板方法的方式和Bottle相似,创建一个函数并通过参数的形式传入render_template,
run.py
from flask import Flask,url_for,render_template,Markup
app = Flask(__name__)
def test(a,b): #自定义的标签,此方法在使用时,需要在render_temlate中传入到指定以页面使用
return a+b
@app.template_global() # 不需要传入,可直接在页面使用
def sb(a1, a2):
return a1 + a2 + 100
@app.template_filter() #不需要传入,使用时要在一个值(此值作为第一个参数传入到过滤器中)的后面加入|,然后再加参数
def db(a1, a2, a3):
return a1 + a2 + a3
@app.route('/index')
def index():
v1 = "字符串"
v2 = [11,22,33]
v3 = {"k1":"v3","sdf":"sdgfgf"}
v4 = ""
v5 = Markup("")
return render_template("index.html",v1=v1,v2=v2,v3=v3,v4=v4,v5=v5,test=test)
if __name__ == '__main__':
app.run(debug=True)
index.html
Title
{{ v1 }}
{% for foo in v2 %}
- {{ foo }}
{% endfor %}
{{ v2.1 }}
{% for k,v in v3.items() %}
- {{ k }} {{ v }}
{% endfor %}
{{ v3.k1 }}
{{ v3.get("k1") }}
{{ v4|safe }}
{{ v5 }}
{{ test(1,2) }}
{{ sb(1,2) }}
{{ 1| db(2,3) }}
PS:模板继承的方法和django的一样。
3.宏只有定义的东西在很多地方去使用的时候才去用它,
html
{% macro xx(name, type='text', value='') %}
关注
打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?