Flask_信号使用场景_存储用户登录日志

标题 Flask_信号使用场景_存储用户登录日志

1.信号使用场景
定义一个登录的信号,以后用户登录进来以后
就发送一个登录信号,然后能够监听这个信号
在监听到这个信号以后,就记录当前这个用户登录的信息
用信号的方式,记录用户的登录信息即登录日志

# 2.编写一个signals.py文件创建登录信号  如下图
from blinker import Namespace
from datetime import datetime
from flask import request, g

# 创建一个登陆信号
momoSpace = Namespace()
login_signal = momoSpace.signal('创建一个登陆信号')


# 监听信号
def ligin_log(sender):
    # 用户名 时间 ip
    uname = g.uname            # 获取用户名
    now = datetime.now()       # 获取当前时间
    ip = request.remote_addr   # 获取IP
    log_data = "{uname}在{now}  ip:{ip}".format(uname=uname, now=now, ip=ip)
    with open('login_log.txt', 'a',encoding='utf-8') as f:
        f.write(log_data + '\n')
        f.close()


login_signal.connect(ligin_log)

在这里插入图片描述

# 3.使用信号存储用户登录日志
from flask import Flask,request,g
from blinker import Namespace
from signals import login_signal

app = Flask(__name__)
@app.route('/login/')
def login():
    # 通过查询字符串的形式来传递uname这个参数
    uname = request.args.get('uname')      # http://127.0.0.1:5000/login/?uname=momo 获取uname中的momo
    if uname:
        g.uname = uname    # uname 传入g.uname
        # 发送信号
        login_signal.send()
        return '登陆成功'
    else:
        return '请输入用户名'


if __name__ == '__main__':
    app.run()

在这里插入图片描述这里需要注意的执行的时候有些小伙伴不会生成指定文件,是因为权限不够,需要获取权限
1.打开cmd 注意用cmd时关闭pycharm的运行
在这里插入图片描述
2.我用的是 virtualenvwrapper


找到自己曾经创建的项目 我创建项目是flask_env1 利用worko进入 到自己在pycharm中创建项目名字
在这里插入图片描述
利用dir打开
在这里插入图片描述
输入python [自己的项目名字] 注意:pycharm2018后面都是主文件都是app.py
在这里插入图片描述
执行到这个代码时候就可以在pycharm生成文件

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值