ホームページ > バックエンド開発 > Python チュートリアル > PythonでTodoリストを実装するコード例

PythonでTodoリストを実装するコード例

不言
リリース: 2018-11-15 14:56:18
転載
2709 人が閲覧しました

この記事の内容はPythonでTodoリストを実装するコード例についてですが、一定の参考価値はありますので、困っている友人は参考にしていただければ幸いです。

ページング関数の追加

最初のステップはビュー関数を書き換え、データベースのデータをクエリすることでページング表示を実行することです

# 修改清单显示的视图函数
@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>
ログイン後にコピー

2 番目のステップ: HTMLファイルを書き換えてページング表示を実現し、マクロファイルを再定義します

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

3番目のステップ、一覧に表示されているテンプレートファイルがページング表示バーを呼び出します

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

        {{ paginate('todo_list', todos) }}
ログイン後にコピー

PythonでTodoリストを実装するコード例

##ログ収集機能の追加

最初のステップは、タスクの変更および編集ログを保存するために、元のデータベース操作ファイルに新しいデータベース テーブル Userlog を追加することです。元のデータベースを入力してください。 再度追加する場合は、データベースの移行が必要です。

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:>
ログイン後にコピー

データベース移行に関するファイルがあることを確認してください。基本的なコードは次のとおりです。
# 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()
ログイン後にコピー

ターミナルでコマンドを実行します。

python manage.py db init
python manage.py db migrate -m '添加日志信息'
python manage.py db upgrade
ログイン後にコピー

2 番目のステップは、ルーティングを追加することです。および対応する表示関数 リスト タスクの追加を例として収集されたログ情報

ステータスの変更タスクと削除タスクでもログ情報が追加されます (ここでは省略します)

    userlog = Userlog(ip=request.remote_addr, area="西安",
                      user_id=1, content="添加任务%s" %(name))
    db.session.add(userlog)
    db.session.commit()
ログイン後にコピー

PythonでTodoリストを実装するコード例# #

以上がPythonでTodoリストを実装するコード例の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:segmentfault.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート