欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時間:2020年04月25日 15:48:46   作者:zcx1203  
這篇文章主要介紹了python 實現(xiàn)任務管理清單案例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

base.html:

{% extends "bootstrap/base.html" %}

{% block styles %}
  {{ super() }}
  <link rel="stylesheet" href="../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" class="navbar-toggle collapsed" 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 class="navbar-brand" href="index.html" rel="external nofollow" ></a>
      </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><a href="#" 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="#" 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="#" 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="#" 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="#" 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="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >國內(nèi)</a></li>
          <li><a href="/sysinfo/" rel="external nofollow" >系統(tǒng)信息</a></li>
          <li><a href="#" 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="login.html" rel="external nofollow" ><span class="glyphicon glyphicon-user"></span>
              &nbsp;&nbsp; {{ session.user }}</a></li>
            <li><a href="/logout/" rel="external nofollow" ><span class="glyphicon glyphicon-log-in"></span>
              &nbsp;&nbsp; 注銷 </a></li>

          {% else %}

            <li><a href="/login/" rel="external nofollow" ><span class="glyphicon glyphicon-log-in"></span>
              &nbsp;&nbsp;登陸</a></li>
            <li><a href="/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號京公網(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">
      /*添加任務*/
      <form class="form-horizontal" action="/todo/add/" method="post">
        <div class="form-group">
          {# 添加框          #}
          <div class="col-sm-9">
            <input type="text" class="form-control" placeholder="請?zhí)砑尤蝿? required="required"
                name="todo_name">
          </div>
          {#  選擇框       #}
          <div class="col-sm-2">
            <select class="form-control" name="part">
              {% for part in parts %}
                <option value="{{ part.id }}">{{ part.name }}</option>
              {% endfor %}
            </select>
          </div>

          {#  添加的按鈕       #}
          <div class="col-sm-1">
            <input type="submit" class="btn btn-success" value="添加任務">
          </div>
        </div>

      </form>

      /*任務顯示*/
      <h1>添加任務</h1>
      <table class="table table-bordered">
        <tr>
          <td>任務內(nèi)容</td>
          <td>創(chuàng)建時間</td>
          <td>狀態(tài)</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="/todo/undo/{{ todo.id }}/" rel="external nofollow" class="btn btn-sm btn-success" role="button"><span
              class="glyphicon glyphicon-ok"></span> 已完成</a>

              {% else %}
                <a href="/todo/done/{{ todo.id }}/" rel="external nofollow" class="btn btn-sm btn-warning" role="button"><span
              class="glyphicon glyphicon-remove"></span> 未完成</a>

              {% endif %}

            </td>
            <td>{{ todo.department.name }}</td>
            <td><a href="/todo/delete/{{ todo.id }}/" rel="external nofollow" class="btn btn-sm btn-danger" role="button"><span
              class="glyphicon glyphicon-remove"></span> 刪除</a></td>
          </tr>

        {% endfor %}


      </table>
    </div>
  </div>

{% endblock %}

models.py:

from datetime import datetime
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:971203@localhost/Todo'
# SQLAlchemy 將會追蹤對象的修改并且發(fā)送信號。
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = True
db = SQLAlchemy(app)
bootstrap = Bootstrap(app)
app.config['SECRET_KEY'] = 'westos'
# 1). 面向?qū)ο蠓绞絼?chuàng)建表
# 2). 分析關系:
#    部門和用戶: 一對多
#    用戶和任務: 一對多的關系
#    用戶和用戶登錄日志: 一對多的關系
# 實現(xiàn)一對多(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())  # 創(chuàng)建時間
  department_id = db.Column(db.Integer, db.ForeignKey('department.id'))
  todos = db.relationship('Todo', backref='user')
  userlogs = db.relationship('Userlog', backref='user')
  # 部門id與其他表關聯(lián),不能隨便寫

  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()) # 創(chuàng)建時間
  status = db.Column(db.Boolean, default=False) # 任務狀態(tài), 默認為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)建時間
  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, session

from models import app, Todo, db, Department,User
from mDB import isPasswdOk,isUserExist,addUser
from 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) 是字典類型, 內(nèi)容如下:
    # {'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
      # 如果登陸成功, 跳轉(zhuǎn)到主頁;
      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). 從數(shù)據(jù)庫中查詢
  todos = Todo.query.all()
  parts = Department.query.all()

  return render_template('list.html',
              todos = todos,
              parts=parts)

# 修改任務的狀態(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ài)后, 返回任務列表頁
  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ài)后, 返回任務列表頁
  return redirect(url_for('todo_list'))

run.py:

# 項目真實運行腳本

from models import app,db
# 導入編寫的視圖函數(shù)和路由
from views import *

app.run()

以上這篇python 實現(xiàn)任務管理清單案例就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • 從源碼解析Python的Flask框架中request對象的用法

    從源碼解析Python的Flask框架中request對象的用法

    Flask中的request對象發(fā)送請求使用起來十分方便,但也有一些需要注意的地方,這里我們來從源碼解析Python的Flask框架中request對象的用法,需要的朋友可以參考下.
    2016-06-06
  • Python繪制股票移動均線的實例

    Python繪制股票移動均線的實例

    今天小編就為大家分享一篇Python繪制股票移動均線的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-08-08
  • Python隨機生成迷宮游戲的代碼示例

    Python隨機生成迷宮游戲的代碼示例

    本文主要介紹了Python隨機生成迷宮游戲的代碼示例,Python可以通過生成二維數(shù)組模擬迷宮的結(jié)構,使用深度優(yōu)先搜索和廣度優(yōu)先搜索等算法找到通路,文中通過示例代碼介紹的非常詳細,需要的朋友們下面隨著小編來一起學習學習吧
    2023-07-07
  • python中numpy.empty()函數(shù)實例講解

    python中numpy.empty()函數(shù)實例講解

    在本篇文章里小編給大家分享的是一篇關于python中numpy.empty()函數(shù)實例講解內(nèi)容,對此有興趣的朋友們可以學習下。
    2021-02-02
  • Django之 ArrayAgg與Admin技巧學習

    Django之 ArrayAgg與Admin技巧學習

    這篇文章主要為大家介紹了Django之ArrayAgg與Admin的技巧學習,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-06-06
  • Python灰度變換中的分段線性函數(shù)專項分析實現(xiàn)

    Python灰度變換中的分段線性函數(shù)專項分析實現(xiàn)

    灰度變換是指根據(jù)某種目標條件按一定變換關系逐點改變源圖像中每個像素灰度值的方法。目的是改善畫質(zhì),使圖像顯示效果更加清晰。圖像的灰度變換處理是圖像增強處理技術中的一種非常基礎、直接的空間域圖像處理方法,也是圖像數(shù)字化軟件和圖像顯示軟件的一個重要組成部分
    2022-10-10
  • Python數(shù)學建模學習模擬退火算法整數(shù)規(guī)劃問題示例解析

    Python數(shù)學建模學習模擬退火算法整數(shù)規(guī)劃問題示例解析

    整數(shù)規(guī)劃問題在工業(yè)、經(jīng)濟、國防、醫(yī)療等各行各業(yè)應用十分廣泛,是指規(guī)劃中的變量(全部或部分)限制為整數(shù),屬于離散優(yōu)化問題Discrete Optimization
    2021-10-10
  • Python+Tkinter實現(xiàn)簡單的畫圖軟件

    Python+Tkinter實現(xiàn)簡單的畫圖軟件

    這篇文章主要為大家詳細介紹了如何利用Python和Tkinter實現(xiàn)編寫一個簡單的畫圖軟件,可以實現(xiàn)畫圖、保存、撤銷等功能,感興趣的可以了解一下
    2023-04-04
  • 在Python中使用Fsolve函數(shù)的過程解析

    在Python中使用Fsolve函數(shù)的過程解析

    這篇文章主要介紹了在Python中使用Fsolve函數(shù)的過程解析,在這篇文章中,我們了解到fsolve?是用來尋找非線性方程的根的,了解到fsolve?可以接受的不同種類的參數(shù)以及每個參數(shù)的含義,需要的朋友可以參考下
    2023-06-06
  • 如何基于Python爬蟲爬取美團酒店信息

    如何基于Python爬蟲爬取美團酒店信息

    這篇文章主要介紹了如何基于Python爬蟲爬取美團酒店信息,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-11-11

最新評論