• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

详解python Todo清单实战

python 搞代码 4年前 (2022-01-07) 35次浏览 已收录 0个评论

这篇文章主要介绍了详解python Todo清单实战,需要实现的功能有添加任务、删除任务、编辑任务,操作要关联数据库,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

Todo清单

需要实现的功能有添加任务、删除任务、编辑任务,操作要关联数据库。

任务需要绑定用户,部门。用户需要绑定部门。

 {#自己编写一个基类模板#} {% extends 'bootstrap/base.html' %} {% block styles %} {{ super() }}  {% endblock %} {% block navbar %} <nav class="navbar navbar-default"> <div class="container-fluid"> <!-- Brand and toggle get grouped for better mobile display --><div class="navbar-header"> <button type="button" class="navbar-toggle collapsed"> <span class="sr-only">Toggle navigation</span><span class="icon-bar"></span><span class="icon-bar"></span><span class="icon-bar"></span></button></div><!-- Collect the nav links, forms, and other content for toggling --><div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1"> <ul class="nav navbar-nav"> <li>首页<span class="sr-only">(current)</span></li><li>新闻</li><li>国际</li><li>国内</li><li>系统信息</li><li>登陆用户</li></ul><ul class="nav navbar-nav navbar-right"> {% if 'user' in session %} <li><span class="glyphicon glyphicon-user"></span>    {{ session.user }}</li><li><span class="glyphicon glyphicon-log-in"></span>    注销 </li> {% else %} <li><span class="glyphicon glyphicon-log-in"></span>   登陆</li> {% endif %} <li><span class="glyphicon glyphicon-log-out"></span>   注册</li></ul></div><!-- /.navbar-collapse --></div><!-- /.container-fluid --></nav> {% endblock %} {% block content %} {#定义属于自己的block#} {% block newcontent %} {% endblock %} {% block footer %} <div class="footer" style="margin: 0 auto"> 宇宙大魔王 </div> {% endblock %} {% endblock %}
 {#列表清单#} {% extends 'base.html' %} {% block newcontent %} <div class="row"> <div class="col-md-6 col-md-offset-3"> /*添加任务*/  <div class="form-group"> {# 添加框          #} <div class="col-sm-9"> </div> {#  选择框       #} <div class="col-sm-2">  {% for part in parts %} {{ part.name }} {% endfor %} </div> {#  添加的按钮       #} <div class="col-sm-1"> </div></div> /*任务显示*/ <h1>添加任务</h1><table class="table table-bordered"> <tr> <td>任务内容</td><td>创建时间</td><td>状态</td><td>所属部门</td><td>操作</td></tr> {% for todo in todos %} <tr> <td>{{ todo.name }}</td><td>{{ todo.add_time }}</td> {#    #} <td> {% if todo.status %} <span class="glyphicon glyphicon-remove"></span> 已完成 {% else %} <span class="glyphicon glyphicon-remove"></span> 未完成 {% endif %} </td><td>{{ todo.depart.name }}</td><td> {#              删除#} {#              删除#} <span class="glyphicon glyphicon-remove"></span> 删除</td></tr> {% endfor %} </table></div></div> {% endblock %}
 # 数据库操作文件 todo_models.py from datetime import datetime import pymysql from flask import Flask from flask_sqlalchemy import SQLAlchemy from flask_bootstrap import Bootstrap app = Flask(__name__) app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql+pymysql://root:sheen@localhost/todo' app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = True db = SQLAlchemy(app) bootstrap = Bootstrap(app) class User(db.Model): id = db.Column(db.INTEGER,autoincrement=True,primary_key=True) name = db.Column(db.String(30),unique=True) pwd = db.Column(db.String(30)) add_time = db.Column(db.DateTime, default=datetime.now()) phone = db.Column(db.String(11)) email = db.Column(db.String(18),unique=True) info = db.Column(db.TEXT) department_id = db.Column(db.INTEGER,db.ForeignKey('department.id'))  #部门id与其他表关联 todo_id = db.relationship('Todo',backref = 'user') def __repr__(self): return '' %(self.name) class Department(db.Model): id = db.Column(db.INTEGER,autoincrement=True,primary_key=True) name = db.Column(db.String(30),unique=True) users = db.relationship('User',backref = 'depart') todos = db.relationship('Todo',backref = 'depart') def __repr__(self): return '' %(self.name) class Todo(db.Model): id = db.Column(db.INTEGER,autoincrement=True,primary_key=True) name = db.Column(db.String(30)) add_time = db.Column(db.DateTime, default=datetime.now()) status = db.Column(db.Boolean, default=False) department_id = db.Column(db.INTEGER,db.ForeignKey('department.id'))  #部门id与其他表关联 user_id = db.Column(db.INTEGER,db.ForeignKey('user.id')) def __repr__(self): return '' % (self.name) if __name__ == '__main__': db.drop_all() db.create_all() parts = ['人事部','Python开发部','Java开发部'] partObj = [Department(name=part) for part in parts] db.session.add_all(partObj) db.session.commit() user_1 = User(name='sheen',pwd='123',department_id=2) db.session.add(user_1) db.session.commit()
 # 试图函数程序 todo_views.py from flask import render_<i style="color:transparent">来源gaodai$ma#com搞$$代**码)网</i>template, url_for, request, redirect from todo_models import app,Todo,Department,db @app.route('/') def index(): return render_template('base.html') @app.route('/login/') def login(): return render_template('todo_login.html') @app.route('/list/') def todo_list(): todos = Todo.query.all() parts = Department.query.all() return render_template('todo_list.html',todos=todos,parts=parts) @app.route('/todo/add/',methods=['POST']) def add(): name = request.form['todo_name']  #在todo_list.html文件中表单定义的添加任务input属性name="todo_name"。 part = request.form['part'] todo = Todo(name=name,department_id=part,user_id=1) db.session.add(todo) db.session.commit() print('ok') return redirect(url_for('todo_list')) @app.route('/todo/undo//') def undo(id): todo = Todo.query.filter_by(id=id).first() todo.status = False db.session.commit() return redirect(url_for('todo_list')) @app.route('/todo/done//') def done(id): todo = Todo.query.filter_by(id=id).first() todo.status = True db.session.commit() return redirect(url_for('todo_list')) @app.route('/todo/delete//') def todo_del(id): todo = Todo.query.filter_by(id=id).first() db.session.delete(todo) db.session.commit() return redirect(url_for('todo_list'))
 # 主程序 run.py from flask import Flask from todo_models import app from todo_views import * if __name__ == '__main__': app.run()

list 页面最初显示图

当添加任务后,页面显示如下

当鼠标点击任务状态时,会发生改变

当点击删除按钮时,任务从数据库中删除,也不在页面中显示

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持gaodaima搞代码网

以上就是详解python Todo清单实战的详细内容,更多请关注gaodaima搞代码网其它相关文章!


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:详解python Todo清单实战

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址