flask-会话机制

2023-11-19

使用flask-bootstrap:
步骤:
1。pip install flask-bootstrap
2.进行配置:
from flask-bootstrap import Bootstrap
bootstrap = Bootstrap()

在__init__.py中进行初始化:

初始化bootstrap

bootstrap.init_app(app=app)
3。内置的block:
{% block title %}首页{% endblock %}

{% block navbar %} {% endblock %}

{% block content %} {% endblock %}

{% block styles %} {% endblock %}

{% block srcipts %} {% endblock %}
{% block head %} {% endblock %}

{% block body %} {% endblock %}

flask-bootstrap
bootstrap-flask -----> 卸载

会话机制:
1。cookie方式:

保存:
通过response对象保存。
response = redirect(xxx)
response = render_template(xxx)
response = Response()
response = make_response()
response = jsonify()
# 通过对象调用方法
response.set_cookie(key,value,max_age)
其中max_age表示过期时间,单位是秒
也可以使用expires设置过期时间,expires=datetime.now()+timedelta(hour=1)

获取:
通过request对象获取。
request.form.get()
request.args.get()
cookie也在request对象中
request.cookies.get(key) ----> value

删除:
通过response对象删除。 把浏览器中的key=value删除了
response = redirect(xxx)
response = render_template(xxx)
response = Response()
response = make_response()
response = jsonify()
# 通过对象调用方法
response.delete_cookie(key)

2。session: 是在服务器端进行用户信息的保存。一个字典
注意:
使用session必须要设置配置文件,在配置文件中添加SECRET_KEY=‘xxxxx’,
添加SECRET_KEY的目的就是用于sessionid的加密。如果不设置会报错。

设置:
如果要使用session,需要直接导入:
from flask import session

把session当成字典使用,因此:session[key]=value
就会将key=value保存到session的内存空间
**** 并会在响应的时候自动在response中自动添加有一个cookie:session=加密后的id ****

获取
用户请求页面的时候就会携带上次保存在客户端浏览器的cookie值,其中包含session=加密后的id
获取session值的话通过session直接获取,因为session是一个字典,就可以采用字典的方式获取即可。
value = session[key] 或者 value = session.get(key)
这个时候大家可能会考虑携带的cookie怎么用的????
其实是如果使用session获取内容,底层会自动获取cookie中的sessionid值,
进行查找并找到对应的session空间

删除
session.clear() 删除session的内存空间和删除cookie
del session[key] 只会删除session中的这个键值对,不会删除session空间和

2.登录权限的验证
只要走center路由,判断用户是否是登录状态,如果用户登录了,可以正常显示页面,如果用户没有登录
则自动跳转到登录页面进行登录,登录之后才可以进行查看。

钩子函数:
直接应用在app上:
before_first_request
before_request
after_request
teardown_request

应用到蓝图:
before_app_first_request
before_app_request
after_app_request
teardown_app_request

3.文件上传
A. 本地上传
注意:
表单: enctype=“multipart/form-data”

view视图函数: photo = request.files.get('photo') ----》photo是FileStorage

属性和方法:FileStorage = 》fs
fs.filename
fs.save(path) ----> path上传的路径os.path.join(UPLOAD_DIR,filename)
fs.read() ----> 将上传的内容转成二进制方式

B. 上传到云端(对象存储)
本地的资源有限或者是空间是有限的

https://developer.qiniu.com/kodo/sdk/1242/python  ---》参照python SDK

util.py:

def upload_qiniu():
    #需要填写你的 Access Key 和 Secret Key
    access_key = 'Access_Key'
    secret_key = 'Secret_Key'
    #构建鉴权对象
    q = Auth(access_key, secret_key)
    #要上传的空间
    bucket_name = 'Bucket_Name'
    #上传后保存的文件名
    key = 'my-python-logo.png'
    #生成上传 Token,可以指定过期时间等
    token = q.upload_token(bucket_name, key, 3600)
    #要上传文件的本地路径
    localfile = './sync/bbb.jpg'
    ret, info = put_file(token, key, localfile)
    print(info)

    ---->put_data()  适用于从filestorage里面读取数据实现上传
    ---->put_file()  指定文件路径上传

def delete_qiniu():
    pass

评论:
文章的详情:必须携带aid,aid表示的是文章的主键id

通过主键id得到文章对象

如果还有其他内容的分页,就需要在路由携带page

例如:http://127.0.0.1:5000/article/detail?page=2&aid=1
pagination的分页用法:
print(pagination.items)  # [<Article 4>, <Article 3>, <Article 2>]
print(pagination.page)  # 当前的页码数
print(pagination.prev_num)  # 当前页的前一个页码数
print(pagination.next_num)  # 当前页的后一页的页码数
print(pagination.has_next)  # True
print(pagination.has_prev)  # True
print(pagination.pages)  # 总共有几页
print(pagination.total)  # 总的记录条数
 nginx:

1。轻量级
2。并发能力强
3。高度模块化
4。负载均衡
5。反向代理
https://www.cnblogs.com/taostaryu/p/10547132.html
官网:
http://nginx.org/en/docs/
安装:
https://www.sohu.com/a/330919812_120149005

ls -l /usr/bin | grep python
https://blog.csdn.net/qq_43437122/article/details/103612470

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

flask-会话机制 的相关文章

随机推荐

  • uniapp打包app后,ios端微信登录报错,login:fail [:-1]未能完成操作。(PGWXAPI错误-1。)

    报错内容 errMsg login fail 1 未能完成操作 PGWXAPI错误 1 errCode 100 code 100 报错原因 在manifest json文件 视图模式里面只有appid和 ios平台通用链接两个配置 需要在m
  • 谁能告诉我war包的作用及使用方法。。。。。。

    链接地址 http zhidao baidu com link url iliyTcmsTKb1K4gHMtWUsRIBaXglyOKIQsWwdrgvydvnaUHLe0KEoHvLVz8tLYCjZmvAebFC3srXZEbhW AV
  • Metap:希望通过利用 AI 功能来改变 Metaverse 游戏生态系统

    元宇宙是一个概念 它只会随着时间的推移和让更多的人了解后而越来越受欢迎 因此 了解元宇宙能够更好地利用这种新技术的某些项目是很重要的 能够做到这一点的 一个特殊领域 游戏世界 元宇宙与游戏的关系 将元宇宙的功能与游戏空间放在一起使用并不是一
  • 硬件接口引脚定义(持续更新)

    英文各类硬件接口定义网站 https pinouts ru conn 1 SATA接口引脚定义 2 mSATA接口引脚定义 3 各类USB接口引脚定义 引脚 功能 接线颜色 备注 1 VCC 红色 电源正极 2 Data DM 白色 数据
  • ubuntu配置环境重要网址

    ping不通百度且报错 ping www baidu com Temporary failure in name resolution 的解决方案 https blog csdn net yulei qq article details 1
  • C语言在线代码运行编译工具推荐

    C语言在线运行编译 是一款可在线编程编辑器 在编辑器上输入C语言代码 点击运行 可在线编译运行C语言 C语言代码在线运行调试 C语言在线编译 可快速在线测试您的C语言代码 在线编译C语言代码发现是否存在错误 如果代码测试通过 将会输出编译后
  • V2017+CMake+DCMTK编译安装帮助文档

    转载自https blog csdn net annjeff article details 80899762 一 前言 最近由于项目需要 开始接触DCMTK库 作为一个小白在网上一顿狂搜 看了几天的CSDN博客 终于有了一点头绪 在这个过
  • rpc、gRPC快速入门,python调用,protobuf协议

    什么是rpc grpc又是什么 什么是RPC 远程过程调用协议RPC Remote Procedure Call Protocol RPC是指远程过程调用 也就是说两台服务器A B 一个应用部署在A服务器上 想要调用B服务器上应用提供的函数
  • JavaScript 记录易错点

    1 判断是否是数组的方法 Array isArray 2 获取数组长度用属性 length 不是 length 3 数组添加或删除元素 arrayObject splice index howmany item1 itemX index 必
  • docker 部署springboot(成功、截图)

    1 新建sringboot工程并打包 2 编写Dockerfile文件 基础镜像使用java FROM openjdk 8 作者 MAINTAINER feng VOLUME 指定了临时文件目录为 tmp 其效果是在主机 var lib d
  • 出行者信息服务器,出行者信息服务系统解析.ppt

    出行者信息服务系统解析 ppt ppt 制作 陈倩 ppt 审查 侯湘怡 讲解人 张怀韧 引言 出行者信息服务系统 一 出行者信息服务系统综述 二 出行者信息系统的系统构成及结构框架 三 出行者信息系统的作用 特点与效果 四 出行者信息系统
  • Databend 存储架构总览

    目的 通过本篇文章带大家理解一下 Databend 的存储结构 Databend 内置的 Table 引擎为 Fuse table engine 也是接下来要花重点篇幅要讲的 另外 Databend 还支持外置的 Hive table 及
  • win10病毒和威胁防护无法重新启动解决方法

    1 检查电脑中是否安装了任何的第三方反病毒软件 例如 360 腾讯电脑管家等 如果有的话 麻烦您将其卸载 卸载完毕后重启设备 再看一下病毒和威胁防护能否正常启动 2 按 Windows 徽标键 X 启动 Windows PowerShell
  • nofollow标签的作用 nofollow标签添加方法

    nofollow标签的作用 nofollow标签添加方法 nofollow标签是seo优化常用的一个标签 它的作用是告诉搜索引擎不要追踪这个链接 也就是阻止搜索引擎向这个网页或链接传递权重 nofollow有两种写法 1 将 nofollo
  • 第三章. Pandas入门—索引设置

    第三章 Pandas入门 3 8 索引设置 1 索引的作用 1 更方便的查询数据 2 使用索引可以提升查询性能 如果索引是唯一的 Pandas会使用哈希表优化 查找数据的时间复杂度为O 1 如果索引不是唯一的 但是有序 Pandas会使用二
  • 梯度下降函数理解

    r d 可以理解为有d的参数进行约束 或者 D 向量有d个维度 咱们将楼主的给的凸优化结构细化一点 别搞得那么抽象 不好解释 其中 咱们可以令 f ok 这个先介绍到这里 至于f x 为什么用多项式的方式去模拟 相信也是很多人的疑问 很简单
  • 组织关系图谱

    div style width 100 height 800px div
  • git强制提交本地分支覆盖掉远程分支

    语法比较简单 命令如下 git push origin 分支名 force 举个栗子 git push origin V2 2 3 force 运行结果 Total 0 delta 0 reused 0 delta 0 To http 19
  • golang-bufio 缓冲扫描

    前面两篇博客 介绍了 bufio 包中的缓冲读和写 bufio go 下面再来介绍一下缓冲扫描 scan go 这个扫描的是用来对缓存读的更高级封装 提供了一些更易用的方法 缓冲扫描 Scanner 提供了一个方便的接口来读取数据 例如使用
  • flask-会话机制

    使用flask bootstrap 步骤 1 pip install flask bootstrap 2 进行配置 from flask bootstrap import Bootstrap bootstrap Bootstrap 在 in