# 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-day2——cbv源码分析模版语法请求与响应session及源码分析闪现请求扩展