Maison  >  Article  >  développement back-end  >  Exemple de code d'implémentation de la liste Todo en Python

Exemple de code d'implémentation de la liste Todo en Python

不言
不言avant
2018-11-15 14:56:182644parcourir

Le contenu de cet article concerne l'exemple de code d'implémentation de la liste Todo en python. Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer.

Ajouter une fonction de pagination

La première étape consiste à réécrire la fonction d'affichage, à interroger les données de la base de données et à effectuer un affichage de pagination

# 修改清单显示的视图函数
@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>

Chapitre Étape 2 : Réécrivez le fichier html pour obtenir l'affichage de la pagination, et redéfinissez un fichier de macro

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

Étape 3. Le fichier modèle affiché dans la liste appelle la barre d'affichage de la pagination

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

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

Exemple de code dimplémentation de la liste Todo en Python

Ajouter une fonction de collecte de journaux

La première étape consiste à ajouter une nouvelle table de base de données Userlog au fichier d'opération de base de données d'origine pour stocker le journal de modification et d'édition de la tâche
Lors de l'ajout à la base de données d'origine, la migration de la base de données est requise.

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

Assurez-vous d'avoir un fichier sur la migration de la base de données. Le code de base est le suivant

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

Exécutez la commande dans le terminal

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

Le la deuxième étape consiste à donner aux fonctions de routage et d'affichage correspondantes ainsi qu'aux informations de journal collectées, en prenant comme exemple l'ajout d'une tâche de liste
La modification de l'état et la suppression de tâches ajoutent également des informations de journal, qui sont omises ici

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

Exemple de code dimplémentation de la liste Todo en Python

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer