Home > Backend Development > Python Tutorial > Code example of implementing Todo list in python

Code example of implementing Todo list in python

不言
Release: 2018-11-15 14:56:18
forward
2727 people have browsed it

The content of this article is about the code example of implementing Todo list in python. It has certain reference value. Friends in need can refer to it. I hope it will be helpful to you.

Add paging function

The first step is to rewrite the view function, and perform paging display by querying the database data

# 修改清单显示的视图函数
@app.route('/list/')
@app.route('/list/<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)</page>
Copy after login

The second step : Rewrite the html file, realize paging display, and redefine a macro file

{# marco_page.html#}
{% macro paginate(fname, todos) %}
    {#    dataObj 就是views函数中传递过来的Paginate实例化的对象;#}
    
Copy after login
            {#        判断是否由上一页, #}         {% 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 %}

The third step, the template file displayed in the list calls the paging display bar

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

        {{ paginate('todo_list', todos) }}
Copy after login

Code example of implementing Todo list in python

Add log collection function

The first step is to add a new database table Userlog to the original database operation file to store the modification and editing log of the task
Enter the original database When adding again, database migration is required.

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:>' % (self.ip)</userlog:>
Copy after login

Make sure you have a file about database migration. The basic code is as follows

# 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()
Copy after login

Execute the command in the terminal

python manage.py db init
python manage.py db migrate -m '添加日志信息'
python manage.py db upgrade
Copy after login

The second step is to add routing and corresponding view functions Log information collected on, taking adding a list task as an example
Modify status and delete tasks also add log information, omitted here

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

Code example of implementing Todo list in python

The above is the detailed content of Code example of implementing Todo list in python. For more information, please follow other related articles on the PHP Chinese website!

Related labels:
source:segmentfault.com
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template