flask博客实战-实现登录注册功能

author author     2023-04-26     616

关键词:

参考技术A 上一节我们已经创建了一个用户应用,并创建了用户模型,那么我们这节就开始实现一个简单的用户登录注册功能!

登录注册功能Flask有一个非常优秀的扩展Flask-login,我们可以选择使用这个扩展来实现,但为了学习我们暂时不使用这个第三方扩展,而是选择使用session来实现!

首先,我们需要完善登录的html页面, 路径为: app/auth/templates/login.html

代码详解:

这个登陆模板继承了 base.html 的样式,这个 base.html 中的模块及代码其实就是我们之前实现的首页,只是我们把他作为一个模板基类来继承他!

这段代码中其实就是写了一个输入账号密码的表单,其他多余的代码都是为了实现表单的样式而存在的!

这里要特别说明的是这个input表单必须设置name属性,因为后端要根据此name属性来获取用户输入的值!其他属性则需要大家自行去了解学习!

登录功能的后端逻辑视图, 路径为: app/auth/views/auth.py

代码详解: - request.method == 'POST' 判断当前请求是否为post请求方式 - error = None 来初始化一个错误变量,如果未通过登录验证,把错误信息通过消息传送到页面提示用户

这段代码首先在数据库通过用户提交的用户名去查询该用户,用户不存在就会返回None返回错误提示,用户存在则判断密码是否正确,这里用到了一个 check_password_hash() 的方法,这是用来将密文密码解密后与用户输入密码比对方法,与之对应的有一个 generate_password_hash() 的方法用来加密明文密码保存到数据库!

这段代码则是如果没有返回任何错误提示,说明该提交的表单符合我们的要求,并且数据库也存在该用户信息,那么我们只需要清空session,重新将session中的user_id设置为当前登录的id即可!

因此在实现登录注册逻辑之前就必须引入这两个方法:

登录功能虽然实现了,但我们数据库目前还没有任何一个用户,所以此时就应该要去实现用户的注册功能,向数据库新增用户,大概的逻辑是,用户输入用户名及两次密码,先判断该用户是否已经存在,存在则提示更换用户名,不存在则向数据库创建该用户信息,并清空session,重新设置user_id的值为注册用户的id,以达到注册成功后自动登录的目的!

首先,我们需要完善注册的html页面, 路径为: app/auth/templates/register.html

这是注册页面的html,大家自行理解下,这里着重说一个我们在视图中通过 flash() 传递出来的消息,在模板中由以下代码接收!

注册功能的后端逻辑视图, 路径为: app/auth/views/auth.py

这个注册的逻辑基本上涵盖了我们之前所有章节学到的知识点,这里就不再过多地去一一解释代码,大家可自行理解并完善注释!

通过登录和注册功能的实现,我们已经清楚地知道,用户是否登录其实是判断session会话中是否存在用户的id来决定,那么推出登录,我们只需要清除session会话中的用户id即可,这里我们直接选择清空session的方式实现推出功能!

bp.before_app_request() 注册一个在视图函数之前运行的函数,无论请求什么 URL。 都会先检查用户 ID 是否存储在会话中,并从数据库获取该用户的数据,将其存储在 g.user 上,该数据在请求期间持续。

注册完这个函数之后,我们就可以在base.html中的导航的最右侧通过g.user的返回值,判断用户是否已经登录,显示不同的信息!

对于像下一章节我们要实现的用户中心以及管理后台,则必须是带有权限的访问,最基本的权限应该是必须是登录用户,那么所以说对于那些未登录的用户我们需要拒绝访问的功能!

这个其实思路也非常简单,既然在实现模板中调用用户信息的时候,我们把当前登录的用户信息添加到了g对象,那么我们只需要判断g.user的返回值是否为None即可判断用户是否登陆!

到这里关于用户登录注册相关的基本权限问题我们就完成了,注意这些视图函数都在 app/auth/views/auth.py 文件中!

flask实现用户注册和登录功能

参考技术A文件路径:到这里,用户的注册功能就实现了 查看详情

springboot实战——个人博客项目(代码片段)

...证(用户登录拦截器)🍎过程中遇到的bug4、博客列表页面的实现(更新中...)5、博客详情页面的实现6、博客的修改和删除功能7、博客列表分页功能的实现8、随机加盐的实现一、项目简介项目名称:个人博客... 查看详情

flask实战第45天:完成前台登录界面(代码片段)

我们的注册页面和登录页面有很多相似之处,因此,也可以基于一个模板来实现。首先创建一个模板html,命名为front_signbase.html,然后修改注册页面front_signup.html,继承front_signbase.html%extends‘front/front_signbase.html‘%%blocktitle%注册-BBS... 查看详情

python实现个人博客系统

...a;注册:注册账号登录:通过账号密码进行登录写博客:写博客采用的Markdown编辑器完成的。可以发布自己的博客我的博客& 查看详情

python实现个人博客系统

...a;注册:注册账号登录:通过账号密码进行登录写博客:写博客采用的Markdown编辑器完成的。可以发布自己的博客我的博客& 查看详情

flask实战-个人博客-编写博客前台(代码片段)

编写博客前台博客前台需要开放给所有用户,这里包括显示文章列表、博客信息、文章内容和评论等功能功能。 分页显示文章列表为了在主页显示文章列表,我们要先在渲染主页模板的index视图的数据库中获取所有文章记录... 查看详情

[react实战系列]注册功能的实现(代码片段)

[React实战系列]注册功能的实现之前已经实现的内容:项目开始前的准备工作项目的搭建与配置布局、登录、注册的页面实现及Route的封装注册功能的实现注册的页面UI既然已经实现了,剩下的就是向里面填充功能。注册的... 查看详情

flask开发实战:前言(代码片段)

...部分的基础知识进行简单回顾。 ·第8章:通过个人博客程序Bluelog介绍CRUD操作、用户认证、文章评论、管理后台等功能。  ·第9章:通过图片社交程序Albumy介绍用户注册和认证、用户权限管理、图片上传与处理、 查看详情

flask实战第46天:完成前台登录功能(代码片段)

后台逻辑首先进行表单验证,编辑front.froms.py...classSignInForm(BaseForm):telephone=StringField(validators=[Regexp(r‘1[35678]d9‘,message=‘手机号码格式错误‘)])password=StringField(validators=[Length(5,30,message=‘密码格式错误‘)] 查看详情

使用python+flask开发博客项目,并实现内网穿透(代码片段)

...原因。这篇文章我们将使用这个框架编写一个属于自己的博客网站!并教你如何通过使用内网穿透工具处理项目,让本地的项目可以在公网访问!文章目录1.个人的注册与登录模块2.首页文章展示模块3.文章详情展示模... 查看详情

django-个人博客登录及权限验证功能的实现

完成注册后随即开始进行登录,登录后页面显示登录者的名称实现如下:前端页面html,对session进行判断,有值则显示登录者的名字,无值则显示注册字样:后台views函数 首先对验证码进行验证 验证成功后将前端传入的... 查看详情

pythonweb开发flask轻量级web框架实战项目--实现功能--账号密码登录界面(连接数据库mysql)(代码片段)

...是我太懒了),今天分享一个功能简单的pythonweb实战项目,后期功能可自行丰富。先看效果  输入正确用户名和密码即可登录成功(下图为存放数据的表单)  正文一、导入模块fromflaskimportFlask,render_template,re... 查看详情

redis实战之session实现短信登录以及redis完善登录功能(代码片段)

目录一、环境准备1、导入黑马点评项目1.1、导入SQL1.2、有关当前模型 1.3、导入后端项目1.4、导入前端工程1.5、运行前端项目二、基于Session实现登录流程1、发送验证码:2、短信验证码登录、注册:3、校验登录状态: 4、... 查看详情

whitehole现场场记(步步实现个人博客社区,django实战开发一)

...全,网站反爬,网站管理,分用户系统(博客管理系统,个人管 查看详情

flask实战-个人博客-程序骨架创建数据库模型临接列表关系(代码片段)

编写程序骨架personalBlog的功能主要分为三部分:博客前台、用户认证、博客后台,其中包含的功能点如下图所示: 数据库personalBlog一共需要使用四张表,分别存储管理员(Admin)、分类(Category),文章(Post)和评论(Comment... 查看详情

flask实战-个人博客-电子邮件支持(代码片段)

电子邮件支持因为博客要支持评论,所以我们需要在文章有了新评论后发邮件通知管理员。而且,当管理员回复了读者的评论后,也需要发送邮件提醒读者。 为了方便读者使用示例程序,personalBlog中仍然使用Flask-Mail来发送... 查看详情

[react实战系列]注册功能的优化(代码片段)

[React实战系列]注册功能的优化注册功能的优化获取注册状态注册流程的优化清空表单显示成功提示信息显示失败提示信息重置状态之前已经实现的内容:项目开始前的准备工作项目的搭建与配置布局、登录、注册的页面实现... 查看详情

flask框架实现注册加密功能详解flask企业课学习

文章目录​​一.前言​​​​二.werkzeug密码散列值​​​​三.后端详解​​​​3.1准备​​​​3.2创建数据库​​​​3.4register视图函数​​​​3.5使用Flaskform编写register表单代码​​​​四,前端​​​​4.1使用flask-bootstrap模... 查看详情