{%"/>

python 实现任务管理清单案例-kb88凯时官网登录

时间:2020-04-25
阅读:
免费资源网 - https://freexyz.cn/

base.html:

{% extends "bootstrap/base.html" %}
{% block styles %}
  {{ super() }}
  
{% endblock %}
{% block navbar %}
  
{% endblock %}
{% block content %}
  {#定义属于自己的block#}
  {% block newcontent %}
  {% endblock %}
  {% block footer %}
    
  {% endblock %}
{% endblock %}

list.html:

{% extends 'base.html' %}
{% block newcontent %}
  
/*添加任务*/
{# 添加框 #}
{# 选择框 #}
{# 添加的按钮 #}
/*任务显示*/ {% for todo in todos %} {# #} {% endfor %}
任务内容 创建时间 状态 所属部门 操作
{{ todo.name }} {{ todo.add_time }} {% if todo.status %} {% else %} {% endif %} {{ todo.department.name }}
{% 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 将会追踪对象的修改并且发送信号。
app.config['sqlalchemy_track_modifications'] = true
db = 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 '' %(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 '' %(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 '' % (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 '' % (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) 是字典类型, 内容如下:
    # {'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
      # 如果登陆成功, 跳转到d88尊龙官网手机app主页;
      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//')
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//')
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'))

run.py:

# 项目真实运行脚本
from models import app,db
# 导入编写的视图函数和路由
from views import *
app.run()

python 实现任务管理清单案例

python 实现任务管理清单案例

python 实现任务管理清单案例

免费资源网 - https://freexyz.cn/
返回顶部
顶部
网站地图