python装饰器用于用户付款前的登录验证

学习python过程中的简单记录

代码目的:对于用户付款进行限制,如果没有登录就无法付款。

import time

# 用户登录状态
islogin = False
# 用户数据库
database = [{'username': 'q123456', 'password': '123456'}, {'username': 'q1234567', 'password': '1234567'}]

# 定义登录函数
def login():
    # 核对用户是否在数据库中,在的话就改变key为1
    key = 0
    username1 = input('请输入账号:')
    password1 = input('请输入密码:')
    # 遍历用户数据库
    for i in database:
        database_username, database_password = i['username'], i['password']
        if username1 == database_username and password1 == database_password:
            key = 1
            break
    # 判断用户是否在数据库,在就返回结果
    if key == 1:
        print('登录成功')
        return True
    else:
        print('密码错误,请重新登录')
        return False


# 定义装饰器用于验证登录
def login_required(func):
    def wrapper(*args, **kwargs):
        global islogin
        print('----------付款-----------')
        if islogin:
            func(*args, **kwargs)
        else:
            print('用户未登录,请登录')
            # 跳转登录页面
            islogin = login()
            print('登录结果是:', islogin)

    return wrapper


@login_required
def pay(money):
    print('----付款中-----')
    time.sleep(2)
    print('-----付款金额{}------'.format(money))
    print('------付款完成-------')


pay(10)
pay(20)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值