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

Code example of implementing Todo list in python

不言
不言forward
2018-11-15 14:56:182700browse

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>

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实例化的对象;#}
    
            {#        判断是否由上一页, #}         {% 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) }}

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:>

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()

Execute the command in the terminal

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

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()

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!

Statement:
This article is reproduced at:segmentfault.com. If there is any infringement, please contact admin@php.cn delete