添加分页功能第一步:重写视图函数,查询数据库数据,进行分页显示#修改列表显示的视图函数@app.route('/list/')@app.route('/list/')deftodo_list(page=1):todos=Todo.query.paginate(page,5)parts=Department.query.all()返回render_template('todo_list.html',todos=todos,parts=parts)第二步:改写html文件实现分页显示,重新定义一个宏文件{#marco_page.html#}{%macropaginate(fname,todos)%}{#dataObj是paginate实例化的对象传入views函数;#}{#判断是否来自上一页,#}{%iftodos.has_prev%}{#/list/4/===>/list/3/#}上一页{%else%}上一页{%endif%}{#根据从数据库中查询到的数据,确定页数number,使用for循环#}{#返回一个迭代器,如果有100页,Thin不会返回100个数字,而是12....99100#}{%forpageintodos.iter_pages(right_current=2)%}{#page:生成html代码的页数,todos.page:用户要显示数据的页数#}{%ifpage==todos.page%}{{page}}{%elifpage==None%}...{%else%}{{page}}{%endif%}{%endfor%}{#判断是否有下一页#}{%iftodos.has_next%}{#/list/4/===>/list/3/#}下一页{%else%}下一页{%endif%}
{%endmacro%}第三步,列表显示的模板文件调用分页显示栏{%from'macro_page.html'importpaginate%}{{paginate('todo_list',todos)}}添加日志收集功能第一步是在原来的数据库操作文件中添加一个新的数据库表Userlog,用于存放任务的修改和编辑日志。再次添加原有数据库时,需要进行数据库迁移classUserlog(db.Model):id=db.Column(db.Integer,autoincrement=True,primary_key=True)add_time=db.Column(db.DateTime,default=datetime.now())#创建时间ip=db.Column(db.String(200),nullable=False)#登录ipcontent=db.Column(db.String(200))area=db.Column(db.String(200))#用户登录位置user_id=db.Column(db.Integer,db.ForeignKey('user.id'))#外键def__repr__(self):return''%(self.ip)确保你有数据库迁移了文件,基本代码如下'db',MigrateCommand)if__name__=='__main__':manager.run()在terminal终端执行命令pythonmanage.pydbinitpythonmanage.pydbmigrate-m'添加日志信息'第二步给将收集到的日志信息添加到路由和对应的视图函数中,以添加列表任务为例修改状态和删除任务添加日志信息,这里省略userlog=Userlog(ip=request.remote_addr,area="Xi'一个”,user_id=1,content="添加任务%s"%(name))db.session.add(userlog)db.session.commit()