日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

python 實(shí)現(xiàn)任務(wù)管理清單案例

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

base.html:

{% extends 'bootstrap/base.html' %}{% block styles %} {{ super() }} <link rel='stylesheet' href='http://m.b3g6.com/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://m.b3g6.com/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://m.b3g6.com/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://m.b3g6.com/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://m.b3g6.com/bcjs/4303.html#' rel='external nofollow' rel='external nofollow' rel='external nofollow' rel='external nofollow' rel='external nofollow' rel='external nofollow' rel='external nofollow' >首頁(yè)<span class='sr-only'>(current)</span></a></li> <li><a href='http://m.b3g6.com/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://m.b3g6.com/bcjs/4303.html#' rel='external nofollow' rel='external nofollow' rel='external nofollow' rel='external nofollow' rel='external nofollow' rel='external nofollow' rel='external nofollow' >國(guó)際</a></li> <li><a href='http://m.b3g6.com/bcjs/4303.html#' rel='external nofollow' rel='external nofollow' rel='external nofollow' rel='external nofollow' rel='external nofollow' rel='external nofollow' rel='external nofollow' >國(guó)內(nèi)</a></li> <li><a href='http://m.b3g6.com/sysinfo/' rel='external nofollow' >系統(tǒng)信息</a></li> <li><a href='http://m.b3g6.com/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://m.b3g6.com/bcjs/login.html' rel='external nofollow' ><span class='glyphicon glyphicon-user'></span> &nbsp;&nbsp; {{ session.user }}</a></li> <li><a href='http://m.b3g6.com/logout/' rel='external nofollow' ><span class='glyphicon glyphicon-log-in'></span> &nbsp;&nbsp; 注銷(xiāo) </a></li> {% else %} <li><a href='http://m.b3g6.com/login/' rel='external nofollow' ><span class='glyphicon glyphicon-log-in'></span> &nbsp;&nbsp;登陸</a></li> <li><a href='http://m.b3g6.com/register/' rel='external nofollow' ><span class='glyphicon glyphicon-log-out'></span> &nbsp;&nbsp;注冊(cè)</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號(hào)京公網(wǎng)安備11010802014853 </div> {% endblock %}{% endblock %}

list.html:

{% extends ’base.html’ %}{% block newcontent %} <div class='row'> <div class='col-md-6 col-md-offset-3'> /*添加任務(wù)*/ <form action='/todo/add/' method='post'><div class='form-group'> {# 添加框 #} <div class='col-sm-9'> <input type='text' placeholder='請(qǐng)?zhí)砑尤蝿?wù)' 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='添加任務(wù)'> </div></div> </form> /*任務(wù)顯示*/ <h1>添加任務(wù)</h1> <table class='table table-bordered'><tr> <td>任務(wù)內(nèi)容</td> <td>創(chuàng)建時(shí)間</td> <td>狀態(tài)</td> <td>所屬部門(mén)</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://m.b3g6.com/todo/undo/{{ todo.id }}/' rel='external nofollow' role='button'><span class='glyphicon glyphicon-ok'></span> 已完成</a> {% else %}<a href='http://m.b3g6.com/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://m.b3g6.com/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 將會(huì)追蹤對(duì)象的修改并且發(fā)送信號(hào)。app.config[’SQLALCHEMY_TRACK_MODIFICATIONS’] = Truedb = SQLAlchemy(app)bootstrap = Bootstrap(app)app.config[’SECRET_KEY’] = ’westos’# 1). 面向?qū)ο蠓绞絼?chuàng)建表# 2). 分析關(guān)系:# 部門(mén)和用戶: 一對(duì)多# 用戶和任務(wù): 一對(duì)多的關(guān)系# 用戶和用戶登錄日志: 一對(duì)多的關(guān)系# 實(shí)現(xiàn)一對(duì)多(Role(1): User(n))的關(guān)系# - 多的一端寫(xiě)外鍵# - 少的一端寫(xiě)反向引用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) # 個(gè)人簡(jiǎn)介 add_time = db.Column(db.DateTime, default=datetime.now()) # 創(chuàng)建時(shí)間 department_id = db.Column(db.Integer, db.ForeignKey(’department.id’)) todos = db.relationship(’Todo’, backref=’user’) userlogs = db.relationship(’Userlog’, backref=’user’) # 部門(mén)id與其他表關(guān)聯(lián),不能隨便寫(xiě) def __repr__(self): return ’<User: %s>’ %(self.name)# 部門(mén)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就包含一個(gè)屬性, 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()) # 創(chuàng)建時(shí)間 status = db.Column(db.Boolean, default=False) # 任務(wù)狀態(tài), 默認(rèn)為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()) # 創(chuàng)建時(shí)間 ip = db.Column(db.String(200), nullable=False) # 登錄ip area = db.Column(db.String(200)) # 用戶登錄地點(diǎn) 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方法并且表單驗(yàn)證通過(guò)的話, 返回True; if form.validate_on_submit(): # 1). 獲取用戶提交的表單信息 # print(form.data) 是字典類型, 內(nèi)容如下: # {’user’: ’westos’, ’passwd’: ’westos’, ’submit’: True } user = form.data[’user’] passwd = form.data[’passwd’] # 2. 判斷用戶名和密碼是否正確 if isPasswdOk(user, passwd): # 將用戶名和密碼信息存儲(chǔ)到session中; session[’user’] = user session[’passwd’] = passwd # 如果登陸成功, 跳轉(zhuǎn)到主頁(yè); return redirect(url_for(’todo_list’)) else: # 如果登陸失敗, 重新登陸; return render_template(’login.html’,form=form, message='用戶名或者密碼錯(cuò)誤') 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’))# 任務(wù)的增刪改查@app.route(’/todo/add/’, methods=[’POST’])def todo_add(): # 獲取提交的任務(wù)信息 name = request.form[’todo_name’] part = request.form[’part’] # 添加完成之后, 返回任務(wù)列表顯示頁(yè)面 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). 從數(shù)據(jù)庫(kù)中查詢 todos = Todo.query.all() parts = Department.query.all() return render_template(’list.html’, todos = todos, parts=parts)# 修改任務(wù)的狀態(tài)(變成已完成狀態(tài)/變成未完成狀態(tài))@app.route(’/todo/undo/<int:id>/’)def undo(id): todo = Todo.query.filter_by(id=id).first() todo.status = False db.session.commit() # 更新?tīng)顟B(tài)后, 返回任務(wù)列表頁(yè) 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() # 更新?tīng)顟B(tài)后, 返回任務(wù)列表頁(yè) return redirect(url_for(’todo_list’))

run.py:

# 項(xiàng)目真實(shí)運(yùn)行腳本from models import app,db# 導(dǎo)入編寫(xiě)的視圖函數(shù)和路由from views import *app.run()

python 實(shí)現(xiàn)任務(wù)管理清單案例

python 實(shí)現(xiàn)任務(wù)管理清單案例

python 實(shí)現(xiàn)任務(wù)管理清單案例

以上這篇python 實(shí)現(xiàn)任務(wù)管理清單案例就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持好吧啦網(wǎng)。

標(biāo)簽: Python 編程
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
99久久亚洲精品蜜臀| 日韩久久精品| 在线精品视频在线观看高清| 色88888久久久久久影院| 黄色aa久久| 天堂中文在线播放| 亚洲爱爱视频| 久久国产影院| 婷婷成人基地| 丝袜美腿亚洲一区| 亚洲精品精选| 欧美亚洲一区二区三区| 久久国产精品色av免费看| 妖精视频成人观看www| 亚洲一卡久久| 亚洲三区欧美一区国产二区| 日韩精品电影一区亚洲| 国产日产精品_国产精品毛片 | 亚洲精品无播放器在线播放| 欧美福利在线| 亚洲一区有码| 日韩精品亚洲专区| 国产精品分类| 韩国久久久久久| 不卡中文字幕| 亚洲精品国产日韩| 国产精品久久久久9999高清| 久久久久久色 | 欧美精品第一区| 国产传媒在线| 亚洲精品va| 日本不卡高清| 麻豆成人91精品二区三区| 黑人精品一区| 在线精品亚洲| 久久97久久97精品免视看秋霞| av资源新版天堂在线| 亚洲第一区色| 亚洲tv在线| 久久久91麻豆精品国产一区| 成人黄色av| 亚洲激情精品| 国产精品一区毛片| 成人午夜精品| 精品国产亚洲日本| 亚洲午夜视频| 97久久超碰| 久久精品观看| 日韩高清不卡一区| 久久久天天操| 欧美一区成人| 秋霞影视一区二区三区| 亚洲精品系列| 天堂中文av在线资源库| 一区二区日韩免费看| 欧美国产日本| 亚洲男女av一区二区| 国产伦精品一区二区三区视频| 日韩成人亚洲| 91精品尤物| 激情婷婷久久| 国产精品115| 天堂va蜜桃一区二区三区| 国产欧美一区二区三区国产幕精品| 99精品在线免费在线观看| 欧美午夜网站| 波多野结衣一区| 国产精品videossex久久发布| 在线国产一区二区| 高清日韩中文字幕| 一本综合精品| 日韩免费看片| 日韩一区二区三区免费视频| 欧美成人基地| 欧美国产先锋| 亚洲欧洲美洲国产香蕉| 免费观看亚洲| 国产精品xxx| 亚洲乱码一区| re久久精品视频| 日韩av免费大片| 青青青国产精品| 先锋影音久久久| 日韩网站中文字幕| 国产精品白丝久久av网站| 欧美日韩国产免费观看视频| 久久爱www.| 日韩精品久久理论片| 欧美日韩国产一区精品一区| 成人亚洲精品| 青草国产精品| 午夜宅男久久久| 九九久久婷婷| 五月天av在线| 欧美91在线|欧美| 日韩精品一级| 日韩一级欧洲| 欧美日韩亚洲在线观看| 三上亚洲一区二区| 久久在线91| 欧美一区影院| 最新亚洲国产| 视频一区二区国产| 亚洲资源av| 合欧美一区二区三区| 99精品视频精品精品视频| 久久电影tv| 高清一区二区三区av| 久久只有精品| 国产精品hd| 国产日韩欧美高清免费| 日韩精品一区二区三区中文字幕| 视频一区二区中文字幕| 国产精品日韩久久久| 国产午夜久久| 激情久久婷婷| 欧美丝袜一区| 黄色不卡一区| 激情五月综合| 日韩视频在线一区二区三区 | 午夜国产精品视频免费体验区| 亚洲va中文在线播放免费| 成人在线免费观看网站| 久久精品国产99国产| 久久男人av| 中文字幕在线官网| 日韩电影二区| 99久久九九| 伊人成人网在线看| 亚洲欧美日韩国产综合精品二区| 乱人伦精品视频在线观看| 视频一区在线视频| 日本综合视频| 国产精品手机在线播放| 国产精品v日韩精品v欧美精品网站 | 久久在线免费| 欧美日韩精品免费观看视完整| 日韩精品网站| 激情婷婷综合| 蜜桃av一区二区在线观看| 免费看欧美美女黄的网站| 日韩国产精品久久久久久亚洲| 国产三级一区| 成人小电影网站| 国产一区久久| 亚洲午夜免费| 国产精品1区| 亚洲天堂免费电影| 欧美在线亚洲| 欧美日韩18| 极品av在线| 婷婷综合五月| 亚洲精品欧美| 久久99国产精品视频| 日韩精品dvd| 欧美日韩视频一区二区三区| 亚洲精品综合| 国产精品扒开腿做爽爽爽软件| 激情黄产视频在线免费观看| 欧美日韩国产精品一区二区亚洲| 亚洲一区二区日韩| 国产精品嫩草影院在线看| а√天堂8资源在线| 亚洲午夜在线| 日本aⅴ精品一区二区三区| 精品国产精品国产偷麻豆| 中文在线中文资源| 综合在线一区| 美女久久久精品| 免费欧美一区| 国产欧美三级| 欧美美女一区| 欧美在线黄色| 日韩影院二区| 蜜臀av性久久久久蜜臀aⅴ流畅| 国产精品一区免费在线| 人人精品亚洲| 日韩激情一区二区| 国产一区2区| 亚洲一区二区免费看| 国产精品对白| 国产一在线精品一区在线观看| 天堂va欧美ⅴa亚洲va一国产| 久久一区国产| 先锋亚洲精品| 激情不卡一区二区三区视频在线| 久久尤物视频| 蜜臀av一区二区在线免费观看| 精品一区二区三区免费看| 精品1区2区3区4区| 精品三区视频| 日韩中文字幕| 亚洲va在线| 国产欧美三级| 黄色亚洲大片免费在线观看| 捆绑调教美女网站视频一区| 亚洲欧洲午夜| 精品欠久久久中文字幕加勒比| 日本欧洲一区二区| 国产精品毛片久久|