Flask实现用户登录、注册和分页显示用户信息页面

您所在的位置:网站首页 flask的session无法存储信息 Flask实现用户登录、注册和分页显示用户信息页面

Flask实现用户登录、注册和分页显示用户信息页面

2024-07-14 03:56| 来源: 网络整理| 查看: 265

基于Flask实现一个更加美观的用户登录界面,包括登录,注册,消息闪现,模板继承,文件包含以及Jinja2语法。

1、创建一个Flask项目: 在这里插入图片描述 通常我们将html文件放在templates文件夹中,将静态文件,比如css文件,js文件,字体,图片放在static文件夹中。

2、主程序app.py

from flask import Flask, request, render_template, redirect, session, flash # from Flask.UserManager.utils.is_login import is_login # from UserManager.utils.is_login import is_login from utils.is_login import is_login app = Flask(__name__) # flash的消息都存储在session,需要一个会话密匙,密匙随便输入就行,如果对保密性要求高的话,可以使用相关的密匙生成函数 app.config["SECRET_KEY"] = "westos" # 加密盐 users = [ { 'username':'root', 'password':'root' } ] # 会话: session # 缓存: cookie @app.route('/bbs/') @is_login def bbs(): return 'bbs' @app.route('/blog/') @is_login def blog(): return 'blog' @app.route('/') def index(): return render_template('index.html') @app.route('/login/', methods=['GET', 'POST']) def login(): # get直接读取填写的数据 if requesthod == 'GET': return render_template('login.html') # requesthod=='POST else: # 获取post提交的数据 username = request.form.get('username') password = request.form.get('password') for user in users: if user['username'] == username and user['password'] == password: # 存储用户登录信息; session可以认为时字典对象 session['username'] = username # print(session) flash("登录成功") return redirect('/') else: flash("登录失败",category='error') return render_template('login.html', errMessages='login fail') @app.route('/logout/') def logout(): # 将session中的用户信息删除; session.pop('username') flash("注销成功") return redirect('/login/') @app.route('/register/', methods=['GET', 'POST']) def register(): """ 1), http请求的方法为get方法, 直接返回注册页面; 2). http请求的方法为post方法, - 注册的用户名是否已经存在, 如果存在, 重新注册; - 如果不存在, 存储用户名和密码到数据库中; """ if requesthod == 'GET': return render_template('register.html') else: # 获取post提交的数据 username = request.form.get('username') password = request.form.get('password') for user in users: # 注册的用户名是否已经存在, 如果存在, 重新注册; if user['username'] == username: flash("注册失败: 用户名冲突") # session['username'] = username return redirect('/register/') # 如果不存在, 存储用户名和密码到数据库中; else: users.append(dict(username=username, password=password)) flash("用户注册成功, 请登录") return redirect('/login/') @app.route('/list//') # 用户信息的分页查看 def list(page): return render_template('list.html', users=users) if __name__ == '__main__': app.run(port=5006)

3、写完主程序之后,在来写html页面:

首先是login.html文件

登录页面 {##} 记住 ? 忘记密码 ? {% for msg in get_flashed_messages() %} {{ msg }} {% endfor %} 创建一个账号? 立即注册! © 2020 西部开源

闪现消息的创建和接收: 在主程序中flash(message)—>在html文档中{{ get_flashed_message }}接收闪现消息。flash的消息都存储在session,需要一个会话密匙,密匙随便输入就行。

注册页面:register.html 注册页面在登陆页面的基础上稍加改正。

注册页面 {# 两种方式任选一种 #} {##}


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3