signals.py
#incoding=utf-8
from blinker import Namespace
from flask import request,g
from datetime import datetime
namespace = Namespace()
login_signal = namespace.signal('login')
def login_log():
# 用户名 登陆时间 ip地址
now = datetime.now()
ip = request.remote_addr
log_data = '{uname}*{now}*{ip}'.format(uname=g.uname,now=now,ip=ip)
with open('login_log.txt','a') as f :
f.write(log_data+'\n')
f.close()
#监听信号,监听到信号后去执行login_log函数
login_signal.connect(login_log)app文件
#incoding=utf-8
#使用信号存储用户登陆日志
from flask import Flask,request,g
from signals import login_signal
app = Flask(__name__)
@app.route('/login/')
def login():
#通过查询字符串的形式来传递uname这个参数
uname = request.args.get('uname')
if uname:
g.uname==uname
#发送信号
login_signal.send()
return '登陆成功!'
else:
return '请输入用户名!'
if __name__ == '__main__':
app.run()输入url
http://127.0.0.1:5000/login/?uname=momo
pycharm报错
AttributeError: '_AppCtxGlobals' object has no attribute 'uname'
老师帮我看看哪里出了问题