本章内容: 日志管理实现
已上线演示地址: http://movie.mtianyan.cn
项目源码地址: https://github.com/mtianyan/movie_project
模型: Oplog Userlog Adminlog
表单: 无
请求方法: GET
访问控制: @admin_login_req
引入上下文应用处理器的概念封装全局变量把全局变量展现到模板里面
- @admin.context_processor
- def tpl_extra():
- """上下应用处理器"""
- data = dict(online_time=datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
- )
- return data
如何将 online_time 体现在模板中
mark
将增删改查的记录记录下来
- session["admin_id"] = admin.id
- session.pop("admin_id", None)
登录进来将 id 保存到 session 退出时清除
在 tag_add 中添加
- oplog = Oplog(
- admin_id=session["admin_id"],
- ip=request.remote_addr,
- reason="添加标签 %s" % data["name"]
- )
- db.session.add(oplog)
- db.session.commit()
flask 中获取 ip 地址使用 request.remote_addr
上一节中的 g 只活在当前请求的上下文, 岂不是每个都得添加所以在上下文应用处理器中添加字段: logo, 但是全局上下文就包括了那些没有 session['admin'] 存在的页面, 如登录页面所以加上 try 捕获
mark
- @admin.route("/oplog/list/<int:page>/", methods=["GET"])
- @admin_login_req
- def oplog_list(page=None):
- """操作日志管理"""
- if page is None:
- page = 1
- page_data = Oplog.query.join(
- Admin
- ).filter(
- Admin.id == Oplog.admin_id,
- ).order_by(
- Oplog.addtime.desc()
- ).paginate(page=page, per_page=1)
- return render_template("admin/oplog_list.html", page_data=page_data)
- adminlog = Adminlog(
- admin_id=admin.id,
- ip=request.remote_addr,
- )
- db.session.add(adminlog)
- db.session.commit()
- @admin.route("/adminloginlog/list/<int:page>/", methods=["GET"])
- @admin_login_req
- def adminloginlog_list(page=None):
- if page is None:
- page = 1
- page_data = Adminlog.query.join(
- Admin
- ).filter(
- Admin.id == Adminlog.admin_id,
- ).order_by(
- Adminlog.addtime.desc()
- ).paginate(page=page, per_page=1)
- return render_template("admin/adminloginlog_list.html", page_data=page_data)
- insert into userlog(user_id,ip,addtime) values(1,"192.168.4.1",now());
- insert into userlog(user_id,ip,addtime) values(2,"192.168.4.2",now());
- insert into userlog(user_id,ip,addtime) values(3,"192.168.4.3",now());
- insert into userlog(user_id,ip,addtime) values(4,"192.168.4.4",now());
- insert into userlog(user_id,ip,addtime) values(5,"192.168.4.5",now());
- insert into userlog(user_id,ip,addtime) values(6,"192.168.4.6",now());
- insert into userlog(user_id,ip,addtime) values(7,"192.168.4.7",now());
- insert into userlog(user_id,ip,addtime) values(8,"192.168.4.8",now());
- @admin.route("/userloginlog/list/<int:page>/", methods=["GET"])
- @admin_login_req
- def userloginlog_list(page=None):
- """会员登录日志列表"""
- if page is None:
- page = 1
- page_data = Userlog.query.join(
- User
- ).filter(
- User.id == Userlog.user_id,
- ).order_by(
- Userlog.addtime.desc()
- ).paginate(page=page, per_page=2)
- return render_template("admin/userloginlog_list.html", page_data=page_data)
来源: http://www.jianshu.com/p/3e2a2c7485db