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") }}

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

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