# 引入Flask类,Flask类实现了一个WSGI应用
from flask import Flask, render_template, session, current_app
import time
# 获取Flask的实例,它接收包或者模块的名字作为参数,但一般都是传递__name__
app = Flask(__name__)
# 进入首页
@app.route('/',methods=['GET'])
def index():
session['user'] = 'tom'
return render_template('index.html')
'''
app_context_processor作为一个装饰器修饰一个函数,称作上下文处理器,
借助app_context_processor我们可以让所有自定义变量在模板中可见
函数的返回结果必须是dict,届时dict中的key将作为变量在所有模板中可见
'''
@app.context_processor
def appinfo():
print('session中数据: ', session['user']) # session中数据: tom
return dict(appname=current_app.name)
@app.context_processor
def get_current_time():
print('session中数据: ', session['user']) # session中数据: tom
def get_time(timeFormat="%b %d, %Y - %H:%M:%S"):
return time.strftime(timeFormat)
return dict(current_time=get_time)
'''
app.secret_key 不能少,否则会报下述错误
raise RuntimeError('The session is unavailable because no secret '
'''
app.secret_key = '123456'
if __name__ == '__main__':
app.run(debug=True)
html文件,注意模板文件必须放在项目的子目录templates文件夹中
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Flask Session 示例</title>
</head>
<body>
<p>请求路径: {{ request.url }}</p>
<p>session中的数据: {{ session.user }}</p>
<p>当前应用名(说文件名应该更准确) is: {{ appname }}</p>
<p>当前时间 is: {{ current_time() }}</p>
<p>格式化当前时间 is: {{ current_time("%Y-%m-%d") }}</p>
</body>
</html>
网友评论