前端路由网络访问:
Request对象:
直接导包,用点访问就有
- 属性:
使用:
@blue.route('/requrest')
def get_request():
return request.host
-
args: 得到的请求参数字典;(元组形成的列表)
- 所有请求都可以获得
- 从请求的url里面获得
-
form:得到post,put,patch方法里面的参数:格式和上面差不多;
- 从请求头里面去获得;
- 类型是:不可改变的多的字典 对字典类型进行了封装。
-
files :文件上传:原生实现,插件实现
-
heads:请求头:
-
获取immutableMultiDict中的值:
- dict[key] or dict.get(‘key’) //推荐get方法获取。不会抛出异常
- dict.getlist[‘key’]//获取key对应的所以值。
项目拆分,查看官方文档:
----前面知识总结---------
知识总结:
flask :
-
基于python的Web的微框架:
- 轻量级
- 轻和微不是意味着不适用于大型项目,而是说为开发者做了很少的选择,做的事情不多
-
内置两大核心模块:
- jinja2:模版引擎
- Werkzurg: WSGI工具集 web服务网关接口
-
使用到的拓展包:
- flask-script
- flask-blueprint
- flask-sqlalchemy
- flask-migrate : 数据库迁移
App包里面 init.py 文件是模块里最先加载的,并且是单例的;
view: 路由器传参数
- 参数如何传递,参数的限制,参数的种类。
- 路由重定向
- 反向解析路由
- flask框架 :request 对象 属性
- path
- url
response 对象:
- 指定返回状态码 :
return 'xxx',200
- render_template(‘template.name’):将模版变成了字符串;
#return 'sleeping ',400
response = make_response('hhh')
# 通过观看源码,自己造一个respose对象:
response = Response('自己dit一个resposse')
- abort(404)//不想处理的可以直接终止response
- 捕获异常:
# @app下面是全局处理,blue下面就单个蓝图处理
@blue.errorhandler(404)
def hander404(e):
return '404 找不到啦,傻子哦'
创建response三种方式:
- 直接返回字符串
- make_response
- 直接构建response
参数设置:
- 内容
- 状态码
reder_template:
- 作用,将模版变成字符串
HttpEXception:
- 子类指定两个属性进行实现
- 状态码 code
- 描述 description
会话技术 cookie
- 跨请求共享数据
- 每次请求都是从 request开始到response结束
- http请求是无状态到
几大实现技术
-
Cookie: 客户端会话技术,
-
数据存在客户端。
-
key-value格式进行存储
html文件form中使用进行反向路由:
<form action= "{{ url_for('blue.login') }}" method="post"> </form>
-
过程就是 在post的时候 将值存在cookie里面,然后验证或者需要的时候取出来:
@blue.route('/login',methods=['POST','GET'])
def login():
if request.method == 'GET':
return render_template('login.html')
if request.method == 'POST':
username = request.form.get('username')
response = make_response('登陆成功 %s' %username)
# 添加cookie:
response.set_cookie('username',username)
return response
@blue.route('/mine')
def mine():
username = request.cookies.get('username')
return 'welcome %s ' %username
-
cookie默认支持中文
-
Session
- 一般来说默认存储在服务器中
- django可以序列化存储在数据库中
- flask session存在内存中吗?不对
- 记住,需要设置 secret_key, (那是什么呢?
- 服务器重启后,session还是存在 why
- session序列化之后进行了base64编码,zlib压缩,还传递了hash存在cookie里面。
- 存储的时间是31天
拓展: flask-session 拓展库:
-
将session存到redis中去。
- 使用flask-session将session通过键值对的形式存储在redis中
- 只需要install
- 然后初始化 Session(app),其他使用不变。
redis存储实现原理:
-
将数据进行了pickle序列化
-
Token :没说。。。