# Flask CBV,session和redis,以及总结 ###
2021/5/24 2:26:07
本文主要是介绍# 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,以及总结 ###的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-05-31Tiny RDM:你的下一代Redis桌面GUI神器-icode9专业技术文章分享
- 2024-03-21redisinsight-v2
- 2024-02-26Typed property App\Api\Mapper\GamePropsConfigMapper::$apiRedis must not be accessed before initia-icode9专业技术文章分享
- 2024-02-21redisson getlock
- 2024-02-20redis config
- 2024-02-20redis leaderboard
- 2024-01-23缓存选型:Redis or MemCache
- 2024-01-22面试官:Redis持久化能关吗?怎么关?
- 2024-01-21Redis压测工具redis-benchmark-icode9专业技术文章分享
- 2024-01-19这才是你应该了解的Redis数据结构!