Flask框架(二)

一 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'

用来简易数据库链接这一块
登陆时,只需要导入该模块相对应的类,来判断用户信息

三 判断用户是否登陆的装饰器
有时候一些网站的信息,是不对外开放的,只有在登陆状态下才是可读的,这时候就要求对其进行限制的

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值