Flask 模板及session

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__)