Flask 实现登陆 + session

案例一:

# -*- coding: utf-8 -*-
# @Time : 2019/9/24 16:26
# @Author : AnWen
from flask import Flask, render_template, request, redirect, session app = Flask(__name__)
app.secret_key = '!@#$%^&*()11'
app.debug = True @app.route('/login', methods=['GET', 'POST'])
def login():
if request.method == 'GET':
return render_template('login.html')
if request.method == 'POST':
if request.form.get('username') == 'anwen':
session['user'] = request.form.get('username')
return redirect('/')
# 交由客户端保管机制
# 开启session['ursernsm'] = request.form.get('username')
# {"username":anwen}
# 序列化字典 == 字符串
# 加密字符串 Secret key 密钥字符串
#
# 接受反序列化Session;从cookie中获取到一个session key的值
# 通过Secretkey 解密session
# 反序列化成字典 @app.route('/')
def index():
print(session.get('user'))
return render_template('index.html') if __name__ == '__main__':
app.run()

案例二:

# 1 、要求:
# 1.登录页面
# 2.学生概况页面 ID name 点击详情
# 3.学生详情页面 ID name age gender # 2.使用session验证登录状态
# 思考:如何记录登录次数 # 3.基于Session编写登录验证装饰器
# 思考:如何给两个以上的视图函数增加装饰器
from flask import Flask, request, redirect, render_template, session
from functools import wraps USER = {'username': 'anwen', 'password': "123"}
STUDENT_DICT = {
1: {'name': 'Old', 'age': 38, 'gender': '中'},
2: {'name': 'Boy', 'age': 73, 'gender': '男'},
3: {'name': 'EDU', 'age': 84, 'gender': '女'},
}
app = Flask(__name__)
app.secret_key = "!@#$%^&*()"
app.debug = True # 装饰器装饰多个视图函数
def wrapper(func):
@wraps(func) # 保存原来函数的所有属性,包括文件名
def inner(*args, **kwargs):
# 校验session
if session.get("user"):
ret = func(*args, **kwargs) # func = home
return ret
else:
return redirect("/login")
return inner # 首页
@app.route('/')
@wrapper
def index():
# if session.get('user'):
return render_template('index.html')
# else:
# return redirect("/login") # 登录
@app.route('/login', methods=["GET", "POST"])
def login():
if request.method == 'GET':
return render_template('login.html')
if request.method == 'POST':
if request.form.get("username") == USER["username"] and request.form.get("password") == USER["password"]:
session["user"] = request.form.get("username")
return redirect("/")
else:
return redirect("/login") # 学生概况页面
@app.route('/desc')
@wrapper
def desc():
# if session.get("user"):
return render_template('desc.html', stu_dic=STUDENT_DICT)
# else:
# return redirect("/login") # 学生详情页面
@app.route('/info')
@wrapper
def info():
# if session.get("user"):
return render_template('info.html', stu_dic=STUDENT_DICT)
# else:
# return redirect("/login") if __name__ == '__main__':
app.run()

最新文章

  1. sublime text3 前端编译神器,浏览器实时显示
  2. 关于Exception
  3. js物理弹性窗口
  4. iOS 代理与block 逆向传值 学习
  5. imx6 framebuffer 分析
  6. 【转载】教你分分钟学会用python爬虫框架Scrapy爬取心目中的女神
  7. Java-马士兵设计模式学习笔记-观察者模式-读取properties文件改成单例模式
  8. visual studio 2013 c++ 打开code map 功能
  9. sql server2008如何创建外键
  10. (二)一个工作任务引起的乱战——C++程序编译为dll,让C#调用
  11. html5增强元素--续
  12. 如何用java比较两个时间或日期的大小
  13. An Overview of Complex Event Processing
  14. stm32库函数建工程和使用Keil自带库建工程有没有区别?发现了同样的程序在两种情况下keil自带库可以运行的情况,不知是什么原因
  15. Navicat 链接mysql 显示 Clinet dose not support authentication protocol request by server ;consider upgrading MySQL client
  16. OC学习5——类和对象
  17. Kafka记录-常用命令选项说明
  18. Python学习——异常处理
  19. TFS2018环境搭建一单实例安装(适用于小型团队)
  20. LeetCode题解之Unique Email Addresses

热门文章

  1. tomcat启动慢的解决办法
  2. DELPHI7 ADO二层升三层新增LINUX服务器方案
  3. mysql索引原理及优化(三)
  4. Python推荐一整套开发工具
  5. HTTP和HTTPS概念
  6. 常见的 35 个 Python 面试题及答案
  7. (转)SQLAlchemy入门和进阶
  8. pycharm安装pyinstaller将pygame打包成exe
  9. svg的viewport和viewbox
  10. k8s记录-ubuntu安装docker