• 主页
  • 相册
  • 随笔
  • 目录
  • 存档
Total 244
Search AboutMe

  • 主页
  • 相册
  • 随笔
  • 目录
  • 存档

Flask浅析-2

2020-05-25

1. wsgi

可参考之前的webserver搭建及sql注入

我们定义了一个hello_world函数,这个函数接受两个参数。分别是environ和start_response,我们将这个hello_world传递给eventlet.wsgi.server以后, eventlet.wsgi.server在调用hello_world时,会自动传入environ和start_response这两个参数,并接受hello_world的返回值。而这,就是WSGI的作用

也就是说,在python的世界里,通过WSGI约定了web服务器怎么调用web应用程序的代码,web应用程序需要符合什么样的规范,只要web应用程序和web服务器都遵守WSGI 协议,那么,web应用程序和web服务器就可以随意的组合。这也就是WSGI存在的原因。

需要注意两个相近的概念:

  • uwsgi同WSGI一样是一种协议
  • uWSGI是实现了uwsgi和WSGI两种协议的web服务器

2. jinja2

Jinja2是为python提供的一个功能齐全的模板引擎。Jinja2提供了对unicode的全支持,以及一个可选集成的沙盒运行环境

  • source:wiki

3. flask-session-redis

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
import os
from flask import Flask, session, request
from flask_session import Session
from redis import Redis

app = Flask(__name__)
app.config['SESSION_TYPE'] = 'redis' #session存储格式为redis
app.config['SESSION_REDIS'] = Redis( #redis的服务器参数
host='192.168.1.3', #服务器地址
port=6379) #服务器端口

app.config['SESSION_USE_SIGNER'] = True #是否强制加盐,混淆session
app.config['SECRET_KEY'] = os.urandom(24) #如果加盐,那么必须设置的安全码,盐
app.config['SESSION_PERMANENT'] = False #sessons是否长期有效,false,则关闭浏览器,session失效
app.config['PERMANENT_SESSION_LIFETIME'] = 3600 #session长期有效,则设定session生命周期,整数秒,默认大概不到3小时。
Session(app)


@app.route('/')
def default():
return session.get('key', 'not set')

@app.route('/test/')
def test():
session['key'] = 'test'
return 'ok'

@app.route('/set/')
def set():
arg = request.args.get('key')
print(arg)
session['key'] = arg
return 'ok'


@app.route('/get/')
def get():
return session.get('key', 'not set')


@app.route('/pop/')
def pop():
session.pop('key')
return session.get('key', 'not set')


@app.route('/clear/')
def clear():
session.clear()
return session.get('key', 'not set')


if __name__ == "__main__":
app.run(debug=True)

4. 摘抄与参考

  • Flask源码剖析 - 知乎
  • flask-session 在redis中存储session - 上官飞鸿 - 博客园
  • Flask
  • Program Language
  • Python
  • Web
实验:hadoop的安装与简单使用
Python数据模型
  1. 1. 1. wsgi
  2. 2. 2. jinja2
  3. 3. 3. flask-session-redis
  4. 4. 4. 摘抄与参考
© 2024 何决云 载入天数...