一 session操作
cookie是客户端浏览器的缓存,而session是服务端服务器的缓存
Session 对象存储特定用户会话所需的属性及配置信息。这样,当用户在应用程序的 Web 页之间跳转时,存储在 Session 对象中的变量将不会丢失,而是在整个用户会话中一直存在下去。当用户请求来自应用程序的Web 页时,如果该用户还没有会话,则 Web 服务器将自动创建一个 Session 对象。当会话过期或被放弃后,服务器将终止该会话。Session 对象最常见的一个用法就是存储用户的首选项。
直接看代码:
from flask import Flask, session
import random
app = Flask(__name__)
app.config['SECRET_KEY'] = random._urandom(24)
# 设置是24位的字符, 每次运行服务器的secret_key都是不同的,
# 服务器重启后会清除上一次存储的session信息值;
# 设置session值;
@app.route('/')
def index():
# 如何设置session的key-value值
session['name'] = 'westos'
return "hello world"
@app.route('/get/')
def get():
# 如何获取?
return session.get('name')
@app.route('/delete/')
def delete():
# 如何删除?
print(session.get('name'))
session.pop('name')
print(session.get('name'))
return 'delete'
app.run()
执行结果:
index页面:
get页面:
可以看到增加的 name 的 value 值 westos
delete页面:
这里看到的不太明显
可以看到在没执行 delete 删除任务前,westos 是存在的,执行之后,变为 None
二 将用户登陆信息与数据库绑定
要求将用户登陆时的信息,发送至后台与数据库进行比对,来判断用户是否可登陆
import pymysql
from config import DB
# 1. 创建连接
conn = pymysql.connect(
host=DB.HOST,
user = DB.USER,
passwd = DB.PASSWD,
port = DB.PORT,
db = DB.DBNAME,
)
cur = conn.cursor()
def isUserExist(username):
"""判断用户名是否存在"""
sqli = "select * from users where name='%s'" %(username)
res = cur.execute(sqli)
# res返回的是sql语句查询结果的个数;
# 如果为0, 没有查到。
if res == 0:
return False
else:
return True
def isPasswdOk(username, passwd):
sqli = "select * from users where name='%s' and passwd='%s'" %(
username, passwd)
res = cur.execute(sqli)
if res == 0 :
return False
else:
return True
def addUser(username, passwd):
"""用户注册时, 添加信息到数据库中"""
sqli = "insert into users(name, passwd) values('%s', '%s')" %(
username, passwd)
try:
res = cur.execute(sqli)
conn.commit()
except Exception as e:
conn.rollback()
return e
#
# cur.close()
# conn.close()
if __name__ == "__main__":
addUser('root', 'root')
print(isUserExist('root'))
print(isPasswdOk('root', 'root'))
config文件:
class DB:
HOST = '172.25.254.250'
USER= 'root'
PASSWD = 'westos'
PORT = 3306
DBNAME = 'User'
用来简易数据库链接这一块
登陆时,只需要导入该模块相对应的类,来判断用户信息
三 判断用户是否登陆的装饰器
有时候一些网站的信息,是不对外开放的,只有在登陆状态下才是可读的,这时候就要求对其进行限制的