电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

python 實現任務管理清單案例

瀏覽:3日期:2022-07-27 14:49:12

base.html:

{% extends 'bootstrap/base.html' %}{% block styles %} {{ super() }} <link rel='stylesheet' href='http://www.hdgsjgj.cn/static/css/main.css' rel='external nofollow' >{% 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' data-toggle='collapse' data-target='#bs-example-navbar-collapse-1' aria-expanded='false'> <span class='sr-only'>Toggle navigation</span> <span class='icon-bar'></span> <span class='icon-bar'></span> <span class='icon-bar'></span></button><a href='http://www.hdgsjgj.cn/bcjs/index.html' rel='external nofollow' ></a> </div> <!-- Collect the nav links, forms, and other content for toggling --> <div id='bs-example-navbar-collapse-1'><ul class='nav navbar-nav'> <li><a href='http://www.hdgsjgj.cn/bcjs/4303.html#' rel='external nofollow' rel='external nofollow' rel='external nofollow' rel='external nofollow' rel='external nofollow' rel='external nofollow' rel='external nofollow' ></a></li> <li><a href='http://www.hdgsjgj.cn/bcjs/4303.html#' rel='external nofollow' rel='external nofollow' rel='external nofollow' rel='external nofollow' rel='external nofollow' rel='external nofollow' rel='external nofollow' ></a></li> <li><a href='http://www.hdgsjgj.cn/bcjs/4303.html#' rel='external nofollow' rel='external nofollow' rel='external nofollow' rel='external nofollow' rel='external nofollow' rel='external nofollow' rel='external nofollow' >首頁<span class='sr-only'>(current)</span></a></li> <li><a href='http://www.hdgsjgj.cn/bcjs/4303.html#' rel='external nofollow' rel='external nofollow' rel='external nofollow' rel='external nofollow' rel='external nofollow' rel='external nofollow' rel='external nofollow' >新聞</a></li> <li><a href='http://www.hdgsjgj.cn/bcjs/4303.html#' rel='external nofollow' rel='external nofollow' rel='external nofollow' rel='external nofollow' rel='external nofollow' rel='external nofollow' rel='external nofollow' >國際</a></li> <li><a href='http://www.hdgsjgj.cn/bcjs/4303.html#' rel='external nofollow' rel='external nofollow' rel='external nofollow' rel='external nofollow' rel='external nofollow' rel='external nofollow' rel='external nofollow' >國內</a></li> <li><a href='http://www.hdgsjgj.cn/sysinfo/' rel='external nofollow' >系統信息</a></li> <li><a href='http://www.hdgsjgj.cn/bcjs/4303.html#' rel='external nofollow' rel='external nofollow' rel='external nofollow' rel='external nofollow' rel='external nofollow' rel='external nofollow' rel='external nofollow' >登陸用戶</a></li></ul><ul class='nav navbar-nav navbar-right'> {% if ’user’ in session %} <li><a href='http://www.hdgsjgj.cn/bcjs/login.html' rel='external nofollow' ><span class='glyphicon glyphicon-user'></span> &nbsp;&nbsp; {{ session.user }}</a></li> <li><a href='http://www.hdgsjgj.cn/logout/' rel='external nofollow' ><span class='glyphicon glyphicon-log-in'></span> &nbsp;&nbsp; 注銷 </a></li> {% else %} <li><a href='http://www.hdgsjgj.cn/login/' rel='external nofollow' ><span class='glyphicon glyphicon-log-in'></span> &nbsp;&nbsp;登陸</a></li> <li><a href='http://www.hdgsjgj.cn/register/' rel='external nofollow' ><span class='glyphicon glyphicon-log-out'></span> &nbsp;&nbsp;注冊</a></li> {% endif %}</ul> </div><!-- /.navbar-collapse --> </div><!-- /.container-fluid --> </nav>{% endblock %}{% block content %} {#定義屬于自己的block#} {% block newcontent %} {% endblock %} {% block footer %} <div class='footer'> 京ICP備11008151號京公網安備11010802014853 </div> {% endblock %}{% endblock %}

list.html:

{% extends ’base.html’ %}{% block newcontent %} <div class='row'> <div class='col-md-6 col-md-offset-3'> /*添加任務*/ <form action='/todo/add/' method='post'><div class='form-group'> {# 添加框 #} <div class='col-sm-9'> <input type='text' placeholder='請添加任務' required='required'name='todo_name'> </div> {# 選擇框 #} <div class='col-sm-2'> <select name='part'> {% for part in parts %}<option value='{{ part.id }}'>{{ part.name }}</option> {% endfor %} </select> </div> {# 添加的按鈕 #} <div class='col-sm-1'> <input type='submit' value='添加任務'> </div></div> </form> /*任務顯示*/ <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 %} <a href='http://www.hdgsjgj.cn/todo/undo/{{ todo.id }}/' rel='external nofollow' role='button'><span class='glyphicon glyphicon-ok'></span> 已完成</a> {% else %}<a href='http://www.hdgsjgj.cn/todo/done/{{ todo.id }}/' rel='external nofollow' role='button'><span class='glyphicon glyphicon-remove'></span> 未完成</a> {% endif %} </td> <td>{{ todo.department.name }}</td> <td><a href='http://www.hdgsjgj.cn/todo/delete/{{ todo.id }}/' rel='external nofollow' role='button'><span class='glyphicon glyphicon-remove'></span> 刪除</a></td> </tr>{% endfor %} </table> </div> </div>{% endblock %}

models.py:

from datetime import datetimefrom flask import Flaskfrom flask_sqlalchemy import SQLAlchemyfrom flask_bootstrap import Bootstrapapp = Flask(__name__)app.config[’SQLALCHEMY_DATABASE_URI’] = ’mysql+pymysql://root:971203@localhost/Todo’# SQLAlchemy 將會追蹤對象的修改并且發送信號。app.config[’SQLALCHEMY_TRACK_MODIFICATIONS’] = Truedb = SQLAlchemy(app)bootstrap = Bootstrap(app)app.config[’SECRET_KEY’] = ’westos’# 1). 面向對象方式創建表# 2). 分析關系:# 部門和用戶: 一對多# 用戶和任務: 一對多的關系# 用戶和用戶登錄日志: 一對多的關系# 實現一對多(Role(1): User(n))的關系# - 多的一端寫外鍵# - 少的一端寫反向引用class User(db.Model): id = db.Column(db.Integer, autoincrement=True, primary_key=True) # unique:用戶名唯一, nullable=False指用戶名不能為空; name = db.Column(db.String(50), unique=True, nullable=False) pwd = db.Column(db.String(100)) email = db.Column(db.String(30), unique=True) phone = db.Column(db.String(30), unique=True) info = db.Column(db.Text) # 個人簡介 add_time = db.Column(db.DateTime, default=datetime.now()) # 創建時間 department_id = db.Column(db.Integer, db.ForeignKey(’department.id’)) todos = db.relationship(’Todo’, backref=’user’) userlogs = db.relationship(’Userlog’, backref=’user’) # 部門id與其他表關聯,不能隨便寫 def __repr__(self): return ’<User: %s>’ %(self.name)# 部門class Department(db.Model): id = db.Column(db.Integer, autoincrement=True, primary_key=True) name = db.Column(db.String(50), unique=True, nullable=False) # 反向引用: user就包含一個屬性, department users = db.relationship(’User’, backref=’department’) todos = db.relationship(’Todo’, backref=’department’) def __repr__(self): return ’<Department: %s>’ %(self.name)class Todo(db.Model): id = db.Column(db.Integer, autoincrement=True, primary_key=True) name = db.Column(db.String(200), nullable=False) add_time = db.Column(db.DateTime, default=datetime.now()) # 創建時間 status = db.Column(db.Boolean, default=False) # 任務狀態, 默認為Flase(未完成) department_id = db.Column(db.Integer, db.ForeignKey(’department.id’)) user_id = db.Column(db.Integer,db.ForeignKey(’user.id’) ) def __repr__(self): return ’<Todo: %s>’ % (self.id)# 用戶登錄日志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 area = db.Column(db.String(200)) # 用戶登錄地點 user_id = db.Column(db.Integer, db.ForeignKey(’user.id’)) # 外鍵 def __repr__(self): return ’<Userlog: %s>’ % (self.ip)

views.py:

from flask import render_template, request, redirect, url_for, sessionfrom models import app, Todo, db, Department,Userfrom mDB import isPasswdOk,isUserExist,addUserfrom forms import LoginForm,RegisterForm@app.route(’/’)def index(): return render_template(’base.html’)@app.route(’/register/’)def register(): form = RegisterForm() if form.validate_on_submit(): user = request.form(’user’) passwd = request.form(’passwd’) return render_template(’register.html’)@app.route(’/login/’,methods=[’GET’,’POST’])def login(): form = LoginForm() # 如果是post方法并且表單驗證通過的話, 返回True; if form.validate_on_submit(): # 1). 獲取用戶提交的表單信息 # print(form.data) 是字典類型, 內容如下: # {’user’: ’westos’, ’passwd’: ’westos’, ’submit’: True } user = form.data[’user’] passwd = form.data[’passwd’] # 2. 判斷用戶名和密碼是否正確 if isPasswdOk(user, passwd): # 將用戶名和密碼信息存儲到session中; session[’user’] = user session[’passwd’] = passwd # 如果登陸成功, 跳轉到主頁; return redirect(url_for(’todo_list’)) else: # 如果登陸失敗, 重新登陸; return render_template(’login.html’,form=form, message='用戶名或者密碼錯誤') return render_template(’login.html’, form=form)@app.route(’/logout/’)def logout(): session.pop(’user’,None) session.pop(’passwd’,None) return redirect(url_for(’todo_list’))# 任務的增刪改查@app.route(’/todo/add/’, methods=[’POST’])def todo_add(): # 獲取提交的任務信息 name = request.form[’todo_name’] part = request.form[’part’] # 添加完成之后, 返回任務列表顯示頁面 u = User.query.filter_by(name=session[’user’]).first() id = u.id todo = Todo(name=name, department_id=part, user_id=id) db.session.add(todo) db.session.commit() return redirect(url_for(’todo_list’))@app.route(’/todo/delete/<int:id>/’)def todo_delete(id): u = Todo.query.filter_by(id=id).first() db.session.delete(u) db.session.commit() return redirect(url_for(’todo_list’))@app.route(’/list/’)def todo_list(): # 1). 從數據庫中查詢 todos = Todo.query.all() parts = Department.query.all() return render_template(’list.html’, todos = todos, parts=parts)# 修改任務的狀態(變成已完成狀態/變成未完成狀態)@app.route(’/todo/undo/<int:id>/’)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/<int:id>/’)def done(id): todo = Todo.query.filter_by(id=id).first() todo.status = True db.session.commit() # 更新狀態后, 返回任務列表頁 return redirect(url_for(’todo_list’))

run.py:

# 項目真實運行腳本from models import app,db# 導入編寫的視圖函數和路由from views import *app.run()

python 實現任務管理清單案例

python 實現任務管理清單案例

python 實現任務管理清單案例

以上這篇python 實現任務管理清單案例就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持好吧啦網。

標簽: Python 編程
相關文章:
主站蜘蛛池模板: 电力测功机,电涡流测功机,磁粉制动器,南通远辰曳引机测试台 | 山东包装,山东印刷厂,济南印刷厂-济南富丽彩印刷有限公司 | 浇注料-高铝砖耐火砖-郑州凯瑞得窑炉耐火材料有限公司 | 撕碎机_轮胎破碎机_粉碎机_回收生产线厂家_东莞华达机械有限公司 | 传递窗_超净|洁净工作台_高效过滤器-传递窗厂家广州梓净公司 | 江苏密集柜_电动_手动_移动_盛隆柜业江苏档案密集柜厂家 | 膏剂灌装旋盖机-眼药水灌装生产线-西林瓶粉剂分装机-南通博琅机械科技 | 吸污车_吸粪车_抽粪车_电动三轮吸粪车_真空吸污车_高压清洗吸污车-远大汽车制造有限公司 | 保健品OEM贴牌代加工厂家_德州健之源| 深圳快餐店设计-餐饮设计公司-餐饮空间品牌全案设计-深圳市勤蜂装饰工程 | 体检车_移动CT车_CT检查车_CT车_深圳市艾克瑞电气有限公司移动CT体检车厂家-深圳市艾克瑞电气有限公司 | 精密钢管,冷拔精密无缝钢管,精密钢管厂,精密钢管制造厂家,精密钢管生产厂家,山东精密钢管厂家 | PU树脂_水性聚氨酯树脂_聚氨酯固化剂_聚氨酯树脂厂家_宝景化工 | 管理会计网-PCMA初级管理会计,中级管理会计考试网站 | 上海冠顶工业设备有限公司-隧道炉,烘箱,UV固化机,涂装设备,高温炉,工业机器人生产厂家 | ★济南领跃标识制作公司★济南标识制作,标牌制作,山东标识制作,济南标牌厂 | 制冷采购电子商务平台——制冷大市场| 新型锤式破碎机_新型圆锥式_新型颚式破碎机_反击式打沙机_锤式制砂机_青州建源机械 | 原色会计-合肥注册公司_合肥代理记账公司_营业执照代办 | 深圳美安可自动化设备有限公司,喷码机,定制喷码机,二维码喷码机,深圳喷码机,纸箱喷码机,东莞喷码机 UV喷码机,日期喷码机,鸡蛋喷码机,管芯喷码机,管内壁喷码机,喷码机厂家 | 贵州科比特-防雷公司厂家提供贵州防雷工程,防雷检测,防雷接地,防雷设备价格,防雷产品报价服务-贵州防雷检测公司 | 新型锤式破碎机_新型圆锥式_新型颚式破碎机_反击式打沙机_锤式制砂机_青州建源机械 | 螺杆式冷水机-低温冷水机厂家-冷冻机-风冷式-水冷式冷水机-上海祝松机械有限公司 | 火锅底料批发-串串香技术培训[川禾川调官网] | 智能型高压核相仪-自动开口闪点测试仪-QJ41A电雷管测试仪|上海妙定 | 冷却塔厂家_冷却塔维修_冷却塔改造_凉水塔配件填料公司- 广东康明节能空调有限公司 | 南京PVC快速门厂家南京快速卷帘门_南京pvc快速门_世界500强企业国内供应商_南京美高门业 | Duoguan 夺冠集团| 千斤顶,液压千斤顶-力良企业,专业的液压千斤顶制造商,shliliang.com | 恒温恒湿试验箱_高低温试验箱_恒温恒湿箱-东莞市高天试验设备有限公司 | 河南卓美创业科技有限公司-河南卓美防雷公司-防雷接地-防雷工程-重庆避雷针-避雷器-防雷检测-避雷带-避雷针-避雷塔、机房防雷、古建筑防雷等-山西防雷公司 | 称重传感器,测力传感器,拉压力传感器,压力变送器,扭矩传感器,南京凯基特电气有限公司 | ◆大型吹塑加工|吹塑加工|吹塑代加工|吹塑加工厂|吹塑设备|滚塑加工|滚塑代加工-莱力奇塑业有限公司 | 无尘烘箱_洁净烤箱_真空无氧烤箱_半导体烤箱_电子防潮柜-深圳市怡和兴机电 | 水热合成反应釜-防爆高压消解罐-西安常仪仪器设备有限公司 | 冷藏车厂家|冷藏车价格|小型冷藏车|散装饲料车厂家|程力专用汽车股份有限公司销售十二分公司 | 铣刨料沥青破碎机-沥青再生料设备-RAP热再生混合料破碎筛分设备 -江苏锡宝重工 | 山东聚盛新型材料有限公司-纳米防腐隔热彩铝板和纳米防腐隔热板以及钛锡板、PVDF氟膜板供应商 | 骨灰存放架|骨灰盒寄存架|骨灰架厂家|智慧殡葬|公墓陵园管理系统|网上祭奠|告别厅智能化-厦门慈愿科技 | jrs高清nba(无插件)直播-jrs直播低调看直播-jrs直播nba-jrs直播 上海地磅秤|电子地上衡|防爆地磅_上海地磅秤厂家–越衡称重 | pH污水传感器电极,溶解氧电极传感器-上海科蓝仪表科技有限公司 |