在登录视图函数中通过表单提交的数据和数据库中的数据进行对比完成登录验证后可以通过Flask-Login插件实现将登录的信息写入cookie,然后对要求登录的页面进行验证,只有验证通过才能访问指定的页面。

1、安装插件并初始化

pip install Flask-Login

在app/__init__.py中导入插件并初始化

-*- coding:utf-8 -*-

# 初始化flask核心对象

from flask import Flask

from app.models.base import db

from app.models.user import User

from flask_login import LoginManager

# 实例化flask登录插件

login_manager = LoginManager()

# 定义一个函数用来创建app核心对象

def create_app():

app = Flask(__name__)

# app.config.from_object('config')

app.config.from_object('app.secure')

app.config.from_object('app.setting')

# 调用注册蓝图

register_blueprint(app)

# 初始化登录插件

login_manager.init_app(app)

# 告诉login插件认证失败是跳转的页面,将登陆页面的视图函数的endpoint告诉login插件

login_manager.login_view = 'web.login'

# 跳转后提示信息的定义

login_manager.login_message = '请先登录或注册'

# 初始化数据库

db.init_app(app)

with app.app_context():

# 调用生成mysql表的函数

db.create_all()

return app

# 创建注册蓝图的方法

def register_blueprint(app):

# 导入蓝图对象

from app.web.blueprint import web

app.register_blueprint(web)

2、修改登录视图函数login 编辑 app/web/account.py, 当用户验证完账号密码后浏览器中会有一个cookie

from flask_login import login_user

# 登录视图函数

@web.route('/login/', methods=['GET', 'POST'])

def login():

form = LoginForm()

if request.method == 'POST' and form.validate():

user = User.query.filter_by(email=form.email.data).first()

if user and user.check_password(form.password.data):

# 将用户信息写入cookie, remember 表示cookie是否长时间生效

# cookie有效时间需要设置flask配置参数 REMEMBER_COOKIE_DURATION

login_user(user, remember=True)

# 获得要跳转的页面,获得url中的next后面的值这个值就是要求登录的页面

next = request.args.get('next')

# 如果用户访问的登录页面后没有地址或者为非法地址都跳转到首页

if not next or not next.startswith('/'):

next = url_for('web.personal')

return redirect(next)

else:

flash('账号不存在或者密码错误')

return render_template('login.html', form=form)

3、在app/models/user.py模块中添加一个方法,这是一个独立的方法

# 这个函数是独立的模块函数,不是User模型的方法

# 加上装饰器是让login_manager这个插件加载这个函数,在其他视图函数中可以调用这个函数

@login_manager.user_loader

def get_user(uid):

# 通过用户的id 来查询用户的模型,uid是主键查询可以不用filer_by可用get

return User.query.get(int(uid))

4、创建一个视图函数文件app/web/user.py 保存用户信息的视图函数,内容如下

# -*- coding:utf-8 -*-

# 视图函数定义文件,定义和用户相关的视图函数

from .blueprint import web

from flask import session, redirect, render_template

from flask import current_app

from app.models.user import User

from flask_login import login_required, current_user, logout_user

# 登录后个人中心视图函数

@web.route('/personal/')

@login_required

def personal():

user = User.query.get_or_404(current_user.id)

user = current_user.summary

return render_template('personal.html', user=user)

@web.route('/logout/')

def logout():

logout_user()

# return redirect('web.login')

return render_template('index.html')

@web.route('/personal_edit')

@login_required

def personal_edit():

pass

5、创建用户中心模板文件,在app/templates/下创建personal.html内容如下

个人中心

个人中心

昵称 邮箱 电话
{{ user.nickname }} {{ user.email }} {{ user.phone_number }}

修改

mysql flask-login_Flask web模板六–Flask-Login完成登录验证相关推荐

  1. Flask学习 黑马程序员-6节课入门Flask框架web开发视频(中途撤退,寻找py3教程)

    文章目录 postman工具 get和post 如何给路由传参 解析 @app.route('')这个叫视图函数 Jinja2模板引擎 动态传参 注释.变量代码块以及控制代码块的使用 注释:ctrl+ ...

  2. python web开发框架flask_Python Web 开发框架,Flask 与 Django那个更好

    本文把 Flask 和 Django 做一个比对,因为我对这两个 Python Web 框架都有实际的开发经验.希望我可以帮助您选择学习哪个框架,因为学习一个框架可能会非常耗时 -- 当然也很有趣! ...

  3. python web flask开发框架_Python Web 开发框架,Flask 与 Django那个更好

    本文把 Flask 和 Django 做一个比对,因为我对这两个 Python Web 框架都有实际的开发经验.希望我可以帮助您选择学习哪个框架,因为学习一个框架可能会非常耗时 -- 当然也很有趣! ...

  4. python学籍管理系统 flask_taskday05-Python之flask学习 web开发最基本的需要(特别详细且适用)...

    1.首先一个Flask的Web项目的创建需求一(文章概述):一:必须实现命令工具管理App,用于在命令行输入命令对项目进行管理,对后期多多益善 二:必须实现"蓝图"管理,用于将ap ...

  5. Python面试题大全(三):Web开发(Flask、爬虫)

    目录 Web Flask 140.对Flask蓝图(Blueprint)的理解? 141.Flask 和 Django 路由映射的区别? Django 142.什么是wsgi,uwsgi,uWSGI? ...

  6. 看完这篇文章还能不懂Flask这种Web框架吗?

    2019独角兽企业重金招聘Python工程师标准>>> Flask是一个基于Python开发并且依赖jinja2模板和Werkzeug WSGI服务的一个微型框架,对于Werkzeu ...

  7. Web开发 ------ 基于Flask的 任务清单管理系统(二):用户认证

    文章目录 任务清单管理系统(二) 一.用户认证 1.数据库模型 (1)技术要点 (2)核心代码 提交数据库 提交github: (3)测试代码 2.Flask-Login优化数据库模型 (1)技术要点 ...

  8. Flask Web开发入门(一)之简单的登录验证

    Flask is a microframework for Python based on Werkzeug, Jinja 2 and good intentions. 我们的目标是通过Flask实现 ...

  9. python上手--flask框架web开发实践-数据库

    这篇文章,由易而难,步骤清晰,思路讲得很明白.花两小时跟着作者稻谷先生的这篇文章走一遍,对学习python使用Flask来开发web的应用很有帮助. python上手--flask框架web开发实践 ...

最新文章

  1. java金额小写转大写(8.2)
  2. AT2370 Piling Up
  3. JsonCpp的简单使用方法
  4. std::ostringstream::str()返回临时对象
  5. 【dfs】P1036 选数
  6. 数据导出生成word附件使用POI的XWPFTemplate对象
  7. A good book to learn C#2.0 ----C# 2.0 : Practical Guide for Programmers
  8. VS工程,换电脑后出现的问题
  9. js创建对象时,属性加引号与不加引号的区别(转)
  10. 电脑内录录音软件,可选择录音来源
  11. centos os u盘启动盘_UltraISO制作u盘centos启动盘教程
  12. win7文件夹加密软件_winRAR去广告版软件安装教程
  13. clearcase 操作指南
  14. 多态性练习:定义一个基类BaseClass,从他派生出类DerivedClass。BaseClass有成员函数 fn1(),fn2()
  15. VS.NET(C#)-5.18_IIS6架构模型:工作进程(Worker Process)简介
  16. Android 显示历史搜索记录
  17. 在线正则表达式测试工具
  18. 手机投影到电脑上做演示
  19. React 项目兼容低版本浏览器
  20. java家庭记账代码_Java的家庭记账本程序(B)

热门文章

  1. 旋转排序数组系列题详解
  2. 视频压缩标准简史:从1929到2020
  3. 2019年低延迟直播技术展望
  4. 全平台硬件解码渲染方法与优化实践
  5. Hadoop之HDFS面试知识复习
  6. 如何存储 Git 大文件?
  7. 腾讯机智在GTC 2019
  8. 一文看懂家庭宽带光纤是如何入户
  9. Python pip使用国内镜像
  10. 现代c++之列表初始化/统一初始化