资讯专栏INFORMATION COLUMN

python实战----Todo清单续写

DC_er / 3068人阅读

摘要:创建时间登录用户登录地点外键确保你有一个关于数据库迁移的文件,基础代码如下在终端执行命令添加日志信息第二步,给路由和对应视图函数加上采集的日志信息以添加清单任务为例修改状态和删除任务也加上日志信息,这里省略西安添加任务

添加分页功能

第一步:是对视图函数的改写,通过查询数据库数据,进行分页显示

# 修改清单显示的视图函数
@app.route("/list/")
@app.route("/list/")
def todo_list(page=1):
    todos = Todo.query.paginate(page,5)
    parts = Department.query.all()
    return  render_template("todo_list.html",todos=todos,parts=parts)

第二步:改写html文件,实现分页显示,重新定义一个宏文件

{# marco_page.html#}
{% macro paginate(fname, todos) %}
    {#    dataObj 就是views函数中传递过来的Paginate实例化的对象;#}
    
    {# 判断是否由上一页, #} {% if todos.has_prev %} {# /list/4/ ===> /list/3/#}
  • 前一页
  • {% else %}
  • 前一页
  • {% endif %} {# 根据从数据库中查询的数据, 来确定分页的个数, 使用for循环 #} {# 返回一个迭代器, 如果有100页, 薄嗯不会返回100个数字, 而是1 2 。。。。 99 100 #} {% for page in todos.iter_pages(right_current=2) %} {# page: 要生成html代码的页数, todos.page: 用户希望显示数据的页数 #} {% if page == todos.page %}
  • {{ page }}
  • {% elif page == None %}
  • ...
  • {% else %}
  • {{ page }}
  • {% endif %} {% endfor %} {# 判断是否有后一页 #} {% if todos.has_next %} {# /list/4/ ===> /list/3/#}
  • 后一页
  • {% else %}
  • 后一页
  • {% endif %}

{% endmacro %}

第三步,清单显示的模板文件调用分页显示栏

        {% from "macro_page.html" import paginate %}

        {{ paginate("todo_list", todos) }}

添加日志收集功能

第一步,给原有数据库操作文件添加新的数据库表Userlog,用来存放任务的修改编辑日志
对原有的数据库进行再添加时,需要进行数据库迁移。

class Userlog(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) # 登录ip
    content = 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)

确保你有一个关于数据库迁移的文件,基础代码如下

# manage.py
from flask_migrate import MigrateCommand, Migrate
from flask_script import Shell,Manager
from todo_models import app,db,User,Department,Todo

manager = Manager(app)
migrate = Migrate(app,db)

manager.add_command("db",MigrateCommand)
if __name__ == "__main__":
    manager.run()

在terminal终端执行命令

python manage.py db init
python manage.py db migrate -m "添加日志信息"
python manage.py db upgrade

第二步,给路由和对应视图函数加上采集的日志信息,以添加清单任务为例
修改状态和删除任务也加上日志信息,这里省略

    userlog = Userlog(ip=request.remote_addr, area="西安",
                      user_id=1, content="添加任务%s" %(name))
    db.session.add(userlog)
    db.session.commit()

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/44914.html

相关文章

  • 【精华分享】:转行数据分析的一份学习清单

    摘要:数据分析的发展方向一般有商业方向,行业分析业务方向,和机器学习数据挖掘方向。机器学习的书籍推荐统计学习方法,机器学习,机器学习实战三本书。 作者:xiaoyu 微信公众号:Python数据科学 知乎:python数据分析师 上一篇主要分享了博主亲身转行数据分析的经历: 【从零学起到成功转行数据分析,我是怎么做的?】 本篇继上一篇将分享转行数据分析的一些经验和学习方法,看完这篇你将会解...

    suemi 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<