标题 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生成文件