python实现Todo清单的代码示例


本文摘自php中文网,作者不言,侵删。

本篇文章给大家带来的内容是关于python实现Todo清单的代码示例,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

添加分页功能

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

1

2

3

4

5

6

7

# 修改清单显示的视图函数

@app.route('/list/')

@app.route('/list/<int:page>')

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文件,实现分页显示,重新定义一个宏文件

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

{# marco_page.html#}

{% macro paginate(fname, todos) %}

    {#    dataObj 就是views函数中传递过来的Paginate实例化的对象;#}

    <ul class="pagination">

 

        {#        判断是否由上一页, #}

 

        {% if todos.has_prev %}

            {#        /list/4/   ===> /list/3/#}

            <li><a href="{{ url_for(fname, page=todos.prev_num) }}">前一页</a></li>

        {% else %}

            <li class="disabled"><a href="#">前一页</a></li>

 

        {% 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 %}

                <li class="active"><a href={{ url_for(fname, page=page) }}>{{ page }}

                </a></li>

            {% elif page == None %}

                <li class="disabled"><a href={{ url_for(fname, page=1) }}>...</a></li>

            {% else %}

                <li><a href={{ url_for(fname, page=page) }}>{{ page }}</a></li>

            {% endif %}

        {% endfor %}

         

        {#        判断是否有后一页 #}

        {% if todos.has_next %}

            {#        /list/4/   ===> /list/3/#}

            <li><a href="{{ url_for(fname, page=todos.next_num) }}">后一页</a></li>

        {% else %}

            <li class="disabled"><a href="#">后一页</a></li>

 

        {% endif %}

 

    </ul><br>

{% endmacro %}

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

1

2

3

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

 

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

257777623-5bddb2116ea49_articlex.png

添加日志收集功能

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

1

2

3

4

5

6

7

8

9

10

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 '<Userlog: %s>' % (self.ip)

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

1

2

3

4

5

6

7

8

9

10

11

# 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终端执行命令

1

2

3

python manage.py db init

python manage.py db migrate -m '添加日志信息'

python manage.py db upgrade

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

1

2

3

4

userlog = Userlog(ip=request.remote_addr, area="西安",

                  user_id=1, content="添加任务%s" %(name))

db.session.add(userlog)

db.session.commit()

3096227688-5bddb24413e1d_articlex.png

以上就是python实现Todo清单的代码示例的详细内容,更多文章请关注木庄网络博客!!

相关阅读 >>

Python怎么右对齐

Python怎么样输出九九乘法表

爬虫基本流程request和response的介绍

实例详解Python如何轻松实现动态进度条

Python可以开发app吗

Python中argparse库的基本使用(示例)

8年后Python重登2018年度编程语言王座

使用Python通过win32 com实现word文档的写入与保存方法

Python中关于列表list的整数操作与字符操作以及矩阵操作的实例分析

分享Python实现的二叉树定义与遍历

更多相关阅读请进入《Python》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...