Flask 模板及session

作者: ropon 分类: Flask 发布时间: 2019-03-21 09:44
总结
{#{{  }}#} 引入变量
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") }}#}

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

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!