使用 Python 从 0 开发属于你的个人管理系统 18 篇 | 任务列表展示优化与分页的实现

现在我们已经实现了任务计划功能的最基本功能,接下来我们来优化一下任务列表的展示以及分页功能的实现。

之前我们对于任务列表的数据是在前端做判断,从而展示「已完成」和「任务列表」,而更好的方式是在后端直接返回相应的数据。

通往 Python 高手之路

优化展示

在数据库模型创建的时候,我们已经将用户和任务数据表进行了关联,那么现在要通过 is_done 来获取任务列表数据就可以这样:

@app.route('/todolist/<int:is_done>/', methods=['GET', 'POST'])
def todolist(is_done):
    user = User.query.filter_by(id=session['user_id']).first_or_404()
    todos = Todo.query.with_parent(user).filter_by(is_done=is_done)

在前端 html 中,我们可以把任务的时间加上:

<div class="col">
    <div class="h5 mb-0 font-weight-bold text-gray-800">{{ todo.description }}</div>
    <div class="h8 mb-0 text-gray-600">{{ todo.create_time }}</div>
</div>

这样就显得清晰一些了:

但在已完成列表中,我们可以做一个判断,显示完成时间,并且把文字加上 del 样式:

{% elif is_done==1 %}
<div class="col">
    <div class="h5 mb-0 font-weight-bold text-gray-800"><del>{{ todo.description }}</del></div>
    <div class="h8 mb-0 text-gray-600">{{ todo.done_time }}</div>
</div>
<div class="col-auto">
    <input type="checkbox" data-todo-id="{{ todo.id }}" class="btn-check" id="btn-check-outlined"
           autocomplete="off" checked>
</div>
{% endif %}

效果如下:

分页功能

那么如果用户添加了很多任务,这时候总不能让用户一直用鼠标滚动吧,所以我们可以在页面中添加分页功能。

首先我们可以在

本文隐藏内容 登陆 后才可以浏览
这里主要是讲页数和任务状态传过去后端获取数据。

运行起来吧:

可以看到,我们的分页功能就实现啦!下回见,peace!

发表回复