14 -Flask构建弹幕微电影网站-后台逻辑(六)

本章内容: 日志管理实现
已上线演示地址: http://movie.mtianyan.cn
项目源码地址:https://github.com/mtianyan/movie_project

  1. 模型: Oplog Userlog Adminlog
  2. 表单: 无
  3. 请求方法: GET
  4. 访问控制: @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
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
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)

设置了列表的处理view。前往grid中为跳转的url添加page字段。

mark
mark

使用pagedata填充页面字段值。

mark
mark

然后import pg 并调用page方法进行分页操作

mark
mark
mark
mark

管理员登录日志

在登录的view视图时存入数据

        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)

将page_data填充到模板中,import pg 然后调用page方法。

mark
mark
mark
mark

前往grid中添加跳转过来的url

mark
mark

会员登录日志列表

添加测试数据

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());

views.py中

@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)

然后先使用pagedata填充数据,再使用import pg 以及page方法进行分页

mark
mark
mark
mark
mark
mark

gird中为跳转到日志管理的url添加page参数

第七章结束,撒花庆祝。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值