x

Web框架 Flask 之 请求方式 & 会话

常见的请求方式 GET : 页面的默认请求方式,请求的数据是以明文的形式放在路由上面,以 ? 开头的键值对,中间以 & 连接多个参数 POST : 请求的数据隐藏发送的,安全系数高,通常用来向服务器提交数据 请求对象 Flask 中由全局对象 request 处理请求,需要使用 from flask import request 导入模块

request 常用属性

属性名 描述 args 获取 get 请求的参数 form 获取 post 请求的参数 method 获取请求的方式 GET or POST files 获取上传的文件 cookirs 获取 cookie 信息 headers 获取请求头 path 获取 / host 获取 ip:host host_url 获取 http://127.0.0.1:5000/ referrer 请求的来源 配置请求 # 配置路由 支持 POST 及 GET 请求 (默认仅支持 GET 请求)

@app.route("/",methods=["POST","GET"])

def view():

# 如果请求方式为 POST

if request.method == "POST":

# 获取 POST 方式提交的参数

data = request.form

# 如果请求方式为 GET

elif request.method == "GET":

# 获取 GET 方式提交的参数

data = request.args

文件上传 HTML 表单

Flask

@app.route("/file_upload/",methods=["POST"])

def file_upload():

# 获取文件对象

file = request.files.get("img")

# 获取文件名

file_name = file.filename

# 保存文件

file.save(f"./{file_name}")

会话 由于 HTTP 协议都是无状态的,即当前请求和上一次请求没有任何的联系,请求者的身份都是匿名的,这样的访问缺乏连续性,导致在一个 WEB 项目中没有办法表示用户的身份,对于 WEB 有很大的制约,基于此出现了会话机制,即 Cookie 和 Session

Cookie Cookie 是浏览器在请求的时候,由服务器下发,保存在用户的客户端(本地)的一段用于标识身份的小文本

Cookie的出现让浏览器的访问有了连续性,可以有身份的访问,但是也带来了很大的安全隐患,Cookie 很容易被盗用和篡改

(1) 设置 Cookie

在 Flask 中,cookie 设置在响应对象上,使用 make_response() 函数从视图函数的返回值中获取响应对象。之后,使用响应对象的 set_cookie() 函数老存储 cookie

set_cookie(key, value[, max_age, expires, path, domain, secure, httponly])

参数 描述 key 设置的 cookie 中的 key value 设置的 cookie 中的 value max_age cookie的过期时间,值为秒数 expires cookie的过期时间,值为 datetime对象 或 unix时间戳 path 将 cookie 限制为给定路径生效,默认为所有路径 domain cookie 生效的域名 secure 如果为 True,则 cookie 仅可通过 https 使用 httponly 如果为 True,则禁止 JavaScript 访问 cookie from flask import make_response

@app.route("/")

def view():

resp = make_response(render_template("index.html"))

resp.set_cookie("username","zong")

return resp

(2) 获取 Cookie

request.cookies.get("key")

(3) 删除 Cookie

@app.route("/del_cookie/")

def del_cookie():

rep = make_response("删除 cookie")

rep.delete_cookie("username")

return rep

通过观察 Reponse Headers 可以发现,删除 cookie 就是将 cookie 值 置为空,并将过期时间设置为 过去

Set-Cookie: username=; Expires=Thu, 01-Jan-1970 00:00:00 GMT; Max-Age=0; Path=/

Session 与 Cookie 不同,session 数据存储在服务器上,安全性有了提高。

session 为每个客户端的会话分配 会话ID,会话数据存储在 cookie 的顶部,服务器以加密方式对其进行签名。对于此加密,Flask程序需要定义一个 SECRET_KEY

特点:

session 依赖 cookie 技术 session本身存储在服务器上边,多数情况下存储在数据库中,频繁校验数据会导致服务器,数据库的压力变大 (1) 设置 Session

from flask import session

# 设置 session SECRET_KEY

app.config["SECRET_KEY"] = "test@0527"

# 添加 session

session['xxx'] = "xxx"

(2) 获取 Session

session['xxx']

session.get('xxx')

(3) 删除 Session

# 删除指定 session

session.pop("xx")

# 清空 session

session.clear()

(4) 设置 session 过期时间

# 如果不设置过期时间,session默认为 浏览器关闭后过期

# 默认过期时间为 31 天

session.permanent = True

# 配置 app.config 修改默认过期时间

from datetime import timedelta

app.config['PERMANENT_SESSION_LIFETIME'] = timedelta(days=7)

session.permanent = True

Copyright © 2088 杭州玩家联盟 - 区域游戏活动聚合平台 All Rights Reserved.
友情链接
Go To Top