python flask框架下登录注册界面_Python-用户登录 Flask-Login

2023-11-16

用户登录功能是 Web 系统一个基本功能,是为用户提供更好服务的基础,在 Flask 框架中怎么做用户登录功能呢?今天学习一下 Flask 的用户登录组件 Flask-Login

Python 之所以如此强大和流行,除了本身易于学习和功能丰富之外,最重要的是因为各种类库和组件,可以说没有 Python 做不了的事情,只有不知道的组件。

之所以选择 Flask-Login,是因为它基于Session,适合做有 UI 交互的用户登录,用我们学习了的 Flask 表单做演示,更容易理清用户登录的流程

用户登录说明

Flask-Login 和其他 Flask 组件并没有太大区别,有必要开始之前了解下用户登录的步骤:

登录:用户提供登录凭证(如用户名和密码)提交给服务器

建立会话:服务器验证用户提供的凭证,如果通过验证,则建立会话( Session ),并返回给用户一个会话号( Session id )

验证:用户在后续的交互中提供会话号,服务器将根据会话号( Session id )确定用户是否有效

登出:当用户不再与服务器交互时,注销与服务器建立的会话

依据以上步骤,我们设计一个应用场景,作为实现:

提供一个主页,需要登录才能访问

如果没有登录,跳转到登录页面,登录成功再跳回

登录成功后,可以点击登出退出登录

在登录页面提供注册连接,点击后跳转到注册页面

注册完成后,跳转到登录页面

初始化

先实例化 login_manager 对象,然后用它来初始化应用:

from flask importFlaskfrom flask_login importLoginManager#...

app = Flask(__name__) #创建 Flask 应用

app.secret_key= 'abc' #设置表单交互密钥

login_manager= LoginManager() #实例化登录管理对象

login_manager.init_app(app) #初始化应用

login_manager.login_view = 'login' #设置用户登录视图函数 endpoint

表单交互时,所以要设置secret_key,以防跨域攻击( CSRF )

登录管理对象 login_manager 的 login_view 属性,指定登录页面的视图函数 (登录页面的 endpoint),即验证失败时要跳转的页面,这里设置为登录页

用户模块

用户数据

要做用户验证,需要维护用户记录,为了方便演示,使用一个全局列表 USERS 来记录用户信息,并且初始化了两个用户信息:

from werkzeug.security importgenerate_password_hash#...

USERS =[

{"id": 1,"name": 'lily',"password": generate_password_hash('123')

},

{"id": 2,"name": 'tom',"password": generate_password_hash('123')

}

]

用户信息只包含最基本的信息:

name 为登录用户

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

python flask框架下登录注册界面_Python-用户登录 Flask-Login 的相关文章

  • 关于Socket编程中的inet_ntop、inet_pton和inet_ntoa、inet_addr

    VS2013中调试Socket代码时 遇到了点小问题 问题代码为 cpp view plain copy inet ntoa addrClient sin addr 生成错误消息为 plain view plain copy error C
  • Spark中的基本概念

    Spark中的基本概念 1 基本概念 1 1 RDD 弹性分布式数据集 1 2 DAG 有向无环图 1 3 Partition 数据分区 1 4 NarrowDependency 窄依赖 1 5 ShuffleDependency 宽依赖
  • 互斥锁,自旋锁,原子操作的原理,区别和实现

    一 互斥锁 原理 互斥锁属于sleep waiting类型的锁 例如在一个双核的机器上有两个线程 线程A和线程B 它们分别运行在Core0和Core1上 假设线程A想要通过pthread mutex lock操作去得到一个临界区的锁 而此时
  • windows系统软件开发平台配置

    1 mongodb安装及配置 参考文档 https blog csdn net xuforeverlove article details 88344213 1 1 临时启动mongodb服务 a 打开mongodb安装文件夹 进入并复制d
  • 【七夕活动精选】致你的七夕礼物——3D Heart,跳动的 3D 爱心

    程序效果很简单 是一颗跳动的爱心 在心脏下面有一行小字写着 七夕快乐 按住鼠标左键并拖动可以让它旋转起来 按住右键可以让这颗心暂时停止跳动 执行效果如下 完整的源代码如下 程序名称 致你的七夕礼物 3D Heart 编译环境 Visual
  • sqli-labs 41——65关攻略

    Less 41 基于错误的POST型单引号字符型注入 与之前讲的Less 40的区别 s q l S E L E C T F R O M u s e r s W H E R E i d sql SELECT FROM users WHERE
  • 2023年华中杯选题人数公布

    2023年华中杯选题人数公布 经过一晚上代码的编写 论文的写作 C题完整版论文已经发布 注 蓝色字体为说明备注解释字体 不能出现在大家的论文里 黑色字体为论文部分 大家可以根据红色字体的注记进行摘抄 对应的详细的写作视频教程 争取1号晚上发
  • [机器学习笔记] 支持向量机SVM 和逻辑回归LR的异同

    参考 https www cnblogs com zhizhan p 5038747 html 为什么把SVM和LR放在一起进行比较 一是因为这两个模型应用广泛 二是因为这两个模型有很多相同点 在使用时容易混淆 不知道用哪个好 特别是对初学
  • 性能测试-压力测试-jmeter简单实战

    文章目录 一 压力测试 1 性能指标 响应时间 RT HPS Hits Per second TPS Transaction Per second QPS Query Per second 最大响应时间 Max Response Time
  • oracle如何提高数据库的性能和可用性

    进行数据库优化 通过定期执行优化操作 如维护索引 调整内存参数 优化 SQL 语句等 可以提高数据库的性能和可用性 执行数据库碎片整理 通过执行表空间碎片整理 索引碎片整理 表碎片整理等操作 可以优化数据库的碎片 提高数据存储效率 执行数据
  • ruoyi对数据二次处理后分页失效

    业务场景 正常业务场景下 在service层只做一次查询就能满足需求 若需要分页 只需在Controller层添加继承BaseController 使用startPage 和getDataTable 即可 业务需求存在需要对查询的数据做二次
  • SpringCloud 服务保护机制Hystrix

    微服务高可用技术 大型复杂的分布式系统中 高可用相关的技术架构非常重要 高可用架构非常重要的一个环节 就是如何将分布式系统中的各个服务打造成高可用的服务 从而足以应对分布式系统环境中的各种各样的问题 避免整个分布式系统被某个服务的故障给拖垮
  • Unity中的C#与C++交互

    参考 Unity Manual Low level Native Plugin Interface 源码demo 演示了一个渲染三角形的例子 C 部分代码实现了对底层API的封装以及核心功能实现 RenderingPlugin cpp中定义
  • 记一次Gradle构建项目Cannot locate tasks that match ‘:xxxx‘ as task ‘xxx‘ not found in root project ‘xxxx‘错误

    问题 在使用Gradle构建项目时 遇见了一个奇怪的问题 运行报错如下 Cannot locate tasks that match xxxx as task xxx not found in root project xxxx 思路 单看
  • Linux基础学习笔记之——软件安装:源码与Tarball

    软件安装 源码与Tarball 1 开放源码的软件安装与升级简介 Linux 上面的软件几乎都是经过 GPL 的授权 所以每个软件几乎均提供源码 并且你可以自行修改该程序代码 以符合个人的需求 这就是开放源码的优点 1 1 什么是开放源码
  • 腾讯事务处理技术验证系统3TS-Coo模板安装文档&&说明文档(小白向,简单轻松就能上手)

    本篇文章将详细说明3TS Coo模板的安装和使用 帮助您快速上手项目 第一部分是简单的基础Docker相关概念 精炼的几句小白话快速理解即可 第二部分是快速安装项目环境的安装文档 简单几行命令搞定 小白也能轻松上手 第三部分是对于已经安装的
  • jupter notebook代码无法执行,出现in[*]的解决办法

    In 数字 代表已经执行的代码 其中数字代表可执行的代码编号 解决办法 点击Kernel中的Restart Run all 重新执行全部代码 系统会从In 1 依次执行 并且报错 我们一直改错即可 直至In 变为In 数字 即可

随机推荐

  • 使用Python爬虫和数据可视化,揭示人口大国历年人数的变迁

    前言 人口大国通常在全球人口排名中位居前列 其人口数量远远超过其他国家 而印度和中国这两个国家的人口数量均已经超过14亿 而当前全球的人口总数也不过刚刚突破80亿而已 妥妥的天花板级别存在 或许是中国和印度在人口方面的表现太过 耀眼 以至于
  • 「学习笔记」torchvision.datasets.MNIST 参数解读/中文使用手册

    DataLoader使用手册 参数解读 PyTorch torch utils data DataLoader 中文使用手册 官方手册如下 torchvision datasets MNIST root train True transfo
  • vue开发:前端项目模板

    简介 vue cli创建vue项目 整合vuex vue router axios element ui 项目模板下载地址 创建项目 Java 前端项目合集 使用vue cli创建项目 功能选择 Babel Router vuex Lint
  • HJ67 24点游戏算法

    问题描述 给出4个1 10的数字 通过加减乘除 得到数字为24就算胜利 输入 本题含有多组样例输入 4个1 10的数字 数字允许重复 但每个数字仅允许使用一次 测试用例保证无异常数字 输出 true or false 示例 输入 7 2 1
  • CRC的基本原理详解

    CRC Cyclic Redundancy Check 被广泛用于数据通信过程中的差错检测 具有很强的 检错能力 本文详细介绍了CRC的基本原理 并且按照解释通行的查表算法的由来的思路介绍 了各种具体的实现方法 1 差错检测 数据通信中 接
  • mybatisplus多条件并列复杂查询

    在使用mybatisPlus时 有时需要一些负责的sql条件拼接 这时 我们可以利用 QueryWrapper的and Consumer consumer 和 or Consumer consumer 来对条件进行拼接 查询条件拼接 例如
  • 配置AOP时报错:java.lang.ClassCastException: com.sun.proxy.$Proxy2 cannot be cast to

    报错 Exception in thread main java lang ClassCastException com sun proxy Proxy2 cannot be cast to 看报错信息 显示的是动态代理生成的类无法转换到我
  • navigator.geolocation.getCurrentPosition 获取位置偏移

    navigator geolocation getCurrentPosition function position 获取当前位置成功返回 经度 coords longitude 纬度 coords latitude 准确度 coords
  • 前端Vue模板页面(组件最全)

    https github com PanJiaChen vue element admin 这里是一个真诚的 青年技术交流QQ群 761374713 不管你是大学生 社畜 想学习变成的其他人员 欢迎大家加入我们 一起成长 一起进步 真诚的欢
  • Centos7 安装 Docker Compose

    目录 一 Docker Compose 简介 二 环境准备 三 安装 四 验证 五 问题解决 一 Docker Compose 简介 Compose 是用于定义和运行多容器 Docker 应用程序的工具 通过 Compose 您可以使用 Y
  • 九、JDK1.8—并行流与串行流

    并行流 并行流就是把一个内容分成多个数据块 并用不同的线程分 别处理每个数据块的流 Java 8 中将并行进行了优化 我们可以很容易的对数据进行并 行操作 Stream API 可以声明性地通过 parallel 与 sequential
  • web自动化测试工具之Selenium的使用

    Selenium的使用 Selenium 概述 工作原理 应用场景 安装浏览器驱动 基本使用 安装Selenium模块 注意点 使用分析 代码实现 常见方法 driver对象 定位标签元素与获取标签对象 获取文本内容与属性值 使用无界面浏览
  • Oracle 【直接加载(sqlldr direct=true)】全方位解析与性能优化[2]

    3 比较direct方式使用并行和非并行选项的性能差异 数据文件 leo test data 100000记录 控制文件 leo test ctl 日志文件 leo test log 串行直接加载sqlload sqlldr userid
  • VC++ MapWinGis篇(一)

    添加高德图层 AMapProvider h pragma once include BaseProvider h class ABaseProvider public BaseProvider public ABaseProvider La
  • What time is it?【模拟】

    题目链接 POJ 1676 题意 给你两个时间点 前一个时间点比后一个时间点快了15分钟 当然 也有可能是隔天的 现在要问是否唯一确定第一个时间 输入坑点 两个时间之间用一个空格隔开 所以一行一共可以有25个字符 我们可以枚举00 00 2
  • ABAP doi 导出程序

    PERFORM FRM OUTPUT EXCEL 38 TABLES GT RESULT USING ZHRPA038 LDF PATH FORM FRM OUTPUT EXCEL 38 TABLES PT EXCEL TYPE STAND
  • css如何让两个div上下排列_深入了解CSS层叠上下层

    1 要想理解层叠上下层 首先要先从文档流和盒模型说起 文档流 在CSS中 文档流是一个很基础也是很重要的一个概念 很多时候她被称为Document Flow 但在CSS的标准被称为Normal Flow 即普通流或常规流 大家更喜欢称之为文
  • 基于MATLAB粒子群算法求解单目标优化问题

    基于MATLAB粒子群算法求解单目标优化问题 在实际应用中 优化问题是非常常见的一类问题 而对于单目标优化问题 粒子群算法是目前被广泛采用的一种优化算法 通过对分布在搜索空间中的粒子进行适应度评估和位置调整 粒子群算法可以在较短时间内找到全
  • uniapp开发微信小程序与H5的区别(Vue)

    1 微信小程序中父组件监听子组件的事件 子组件的 listeners拿不到事件 2 微信小程序中event stopPropagation 没用 只能用vue指令的 stop来阻止 3 vue开发网页的时候 一般对于不需要响应式的数据我们可
  • python flask框架下登录注册界面_Python-用户登录 Flask-Login

    用户登录功能是 Web 系统一个基本功能 是为用户提供更好服务的基础 在 Flask 框架中怎么做用户登录功能呢 今天学习一下 Flask 的用户登录组件 Flask Login Python 之所以如此强大和流行 除了本身易于学习和功能丰