# Flask CBV,session和redis,以及总结 ###

Posted 染指未来

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了# Flask CBV,session和redis,以及总结 ###相关的知识,希望对你有一定的参考价值。

Flask CBV,session和redis,以及总结

一丶Flask CBV

# flask cbv 只针对类视图

### 使用cbv
from flask import views # 导入cbv的视图基类 ,views是一个py文件,里面包含3个类

class Login(views.MethodView): # 继承CBV视图基类的最高类
    # ?  为什么定义 get, 默认是通过请求方式找到对应 类函数视图处理
    def get(self):
        return "GET 200 OK!"

    def post(self):
        return "POST 200 OK!"
    
### 需要将CBV添加到路由
	# view_func 中的as_view方法 是把类函数转换成视图函数,也就是 某个请求对应的某个具体函数
app.add_url_rule(\'/login\',view_func=Login.as_view(name="login"))

二丶监听 端口

# 理解为主
"0.0.0.0" 5000
"192.168.14.26" 5000
端口 - 应用程序
包 -> 应用程序

ios 5层中的最高层
应用 					- 									应用
浏览器-9528		目的:(b"HTTP 1.1 / GET\\r\\n")			192.168.14.26:9527

服务器接收字符串 b"HTTP 1.1 / GET\\r\\n"
网卡 b"HTTP 1.1 / GET\\r\\n" - 操作系统 我这里有一段数据你看看吧
操作系统 解包 - 端口 9527 应用程序 - 9527 这个数据包你看看
WSGI:9527 - 收到 b"HTTP 1.1 / GET\\r\\n" 
Flask - WSGI 帮我把这些数据转换成 对象 environ ,这个对象可以 打点儿调用属性
Flask 收到 WSGI 转换的 environ对象 request_class Flask Request 样式
Django request.POST 
Flask request.form 


三丶Flask回顾

Flask Request

request.form # 获取formData中的数据
request.args  # 获取 地址URL中的数据
request.data  # 获取原始请求体数据 , content-type 中没有form 的字眼, 类型是字节类型
request.json  # 获取 content-type:application/json 数据,直接返回字典
request.fiels # 获取请求中的文件数据 FileStorge 对象, 可以直接调用save(文件路径)保存

request.method # 获取请求方式
request.path  # 获取请求路径 ,路由地址
request.host_url # 获取请求host地址	
request.cookies  # 获取Cookie的对象
request.headers  # 获取请求头中的数据

Flaks Response

""      # HTTPResponse
render_templates(模版名称) # 默认存储模板的路径templates
redirect(\'/路由地址\')   # 响应头中的:location: http://url/路由地址

Flask 特殊封装
send_file(\'文件路径\')  # 打开并返回文件内容,自动识别文件的类型,响应类型 Content-Type:响应类型
jsonify(dict)  # 返回标准的json格式数据,响应头的Content-Type:application/json

Flask Session

from flask import session

# 必须设置 secret_key 秘钥
application.secret_key = "$%^&*()&^%$%^&*"
app.config["SECRET_KEY"] = "$%^&*()&^%$%^&*"

# 设置session的值
session["user"] = 123

if session.get("user") ---  session["user"] KeyError


#### session 机制理解
交由客户端保管机制

1.session["user"] = "123"
2.序列化session 字符串
3.通过 SECRET_KEY 加密字符串 加密算法
4.cookie中加入 {SESSION_COOKIE_NAME}:SECRET_KEY 加密字符串
    5.返回客户端

    反:
    1.Cookie获取{SESSION_COOKIE_NAME}:SECRET_KEY
        2.通过 SECRET_KEY 解密 字符串 解密算法
        3.反序列化 字符串 字典 - session
        4.session.get("user")

Flask 路由

# 函数 路由
@app.rout("/")
def index():
	pass

* endpoint  # 是app中唯一的 路由和视图函数之间的桥梁
* methods   # 允许请求的方式 [\'GET\',\'POST\',\'DELETE\',\'PUT\']
* 动态参数路由
	* "/index/<page>"
	* "/look/<xjj>/<picture>"
    def look(xjj,picture):
         pass
* defaults ={"nid":1}  # 视图函数默认参数
* strict_slashes   # 严格遵守路由匹配规则,True 和False ,就是以"/"结尾
* redirect_to # 永久重定向 301 308

# 类 路由
app.add_url_rule("/login",view_func=Login.as_view(name="login"))

Flask 初始化

app=Flask(__name__)

template_folder  # 模板存放路径,os.path.join(root_path,template_folder) ,root_path是当前app对象的目录
static_folder 	# 存放静态文件路径
static_url_path   # 静态文件访问路径,默认是"/{static_folder}"


## import_name # __name__ 锁定当前文件的目录,保证文件唯一
## root_path # 当前application的所在目录 由import_name自动创建
host_matching # 主机位 匹配 config.server_name
static_host # 远程静态文件服务 "{static_host}/{static_folder}"
subdomain_matching  # 支持子域名的主机位匹配
instance_path  # 另一个Flask实例导入
instance_relative_config  # 另一个FlaskConfig导入

Flask 配置 config

app.config  # Flask Config对象
app.debug = True  # 开启debug模式
app.config["DEBUG"] = True  # 开启debug模式
DEBUG 		# 开发环境 log级别低 		重启代码错误透传
TESTING		# 测试环境 log级别较高	
SECRET_KEY   #  开启Session序列化
SESSION_COOKIE_NAME # 在Cookie Session名称 ,默认是session
SESSION_COOKIE_HTTPONLY # 是否只在HTTP请求下开启 session
JSONIFY_MIMETYPE  # 更改 jsonify 时的 Content-Type


### 导入类配置  app.config.from_object() 方法
class DebugConfig(object):
			DEBUG = True
			SECRET_KEY = "%^&*()_"
		
app.config.from_object(DebugConfig)

Flask 蓝图

# 蓝图是不能 run的Flask 实例
# 蓝图中没有Config对象
# 蓝图的作用是隔离应用,隔离路由

# 1.声明蓝图
from flask import Blueprint
bp = Blueprint("蓝图名称全Flask示例唯一",__name__)
# 2. 蓝图路由
@bp.route("application路由一致",url_prefix="/url前缀")
def bp_index():
	pass

# 3. 注册蓝图对象 
app.register_blueprint(bp)

Flask 特殊装饰器

@app.before_request # 在请求进入视图函数之前
@app.after_request # 在响应客户端之前
@app.before_first_request # 启动flask,第一次请求进入视图函数前,只执行一次
@app.errorhandler(404错误参数)  # 重定义 错误信息
def error404(errorMessage):
	return "404"

Flask CBV

以上是关于# Flask CBV,session和redis,以及总结 ###的主要内容,如果未能解决你的问题,请参考以下文章

Flask框架cbv的写法请求与响应请求扩展session源码分析闪现

Flask-登录练习

Flask登录练习

flask-day2——cbv源码分析模版语法请求与响应session及源码分析闪现请求扩展

flask之web网关三件套配置路由(参数转化器及自定义转化器)cbv模板语言session

1 cbv分析2 模板3 请求与响应 4 session及源码分析5 闪现 6 请求扩展