1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70
| 总结 {{ }} 引入变量 Jinjia2模板语法 字典取值操作与python操作字典相似 句点. 遍历复杂数据结构 {% %} 引入逻辑代码
safe 或Markup 标识标签安全,取消转义
后端定义函数,传入模板 {{ addfuc(199, 1) }}
定义全局函数,无需传入前段直接使用 @app.template_global() def testfunc(a, b): return a - b
# 定义全局过滤器,无需传入前段直接使用 @app.template_filter() def ceshifunc(a, b, c): return a + b + c
宏定义 {% macro type_text(name, type) %} {{ name }}: <input type="{{ type }}" name="{{ name }}"> {% endmacro %} {{ type_text("cpu","text") }} {{ type_text("memory","text") }}
继承 layout.html {% block content %} ... {% endblock content %}
{% extends "layout.html" %}
include {% include "form.html" %}
# session # app.secret_key = "加密字符串" 用于序列化和反序列化session # Flask默认将session存放到客户端Cookie中 # 所以session用secret_key加密 # 请求来临 进入视图函数 请求会带上cookie 从cookie取出session字符串 通过secret_key反序列化成字典 session中存值 session["user"] = "ropon" session中取值 user = session.get("user") # 可安装第三方组件Flask-Session 改变session存放位置
# 装饰器回顾 def wapper(func): # @functools.wraps(func) 保留原始函数名 def inner(*args, **kwargs): start = time.time() ret = func(*args, **kwargs) end = time.time() print(end - start) return ret
return inner
@wapper def ceshi(): for i in range(100000000): continue return "test"
print(ceshi()) print(ceshi.__name__)
|