基于Flask与Mariadb实现任务清单管理

目标:

  1. 实现任务的添加,修改状态与删除
  2. 任务只能在登陆状态下实现上面的功能
  3. 添加任务时:显示发布任务的时间与部门等

将此次目标新建一个Flask项目,项目名为(Todo)
在这里插入图片描述
Todo项目包含上图所示文件(migrations:数据库扩展;static:静态文件;templates:html文件;forms:表单处理;manager:数据库扩展;models:连接数据库;run:主函数;views:主函数的路径与视图函数)

主函数(run.py

from models import app
from views import *

if __name__ == '__main__':
    app.run()

主函数的路径与视图函数(views.py

from flask import render_template, redirect, url_for, request, session

from models import app, Todo, db, Department, User, Userlog

from forms import LoginForm,RegisterForm

import  functools


def is_login(f):
    """判断用户是否登陆的装饰器"""
    @functools.wraps(f)
    def wrapper(*args, **kwargs):
        if 'user' not in session:
            return  redirect('/login/')
        return  f(*args, **kwargs)
    return  wrapper


@app.route('/')
def index():
    todos=Todo.query.all()
    parts=Department.query.all()
    return render_template('index.html',
                           todos=todos,
                           parts=parts
                           )

@app.route('/login/',methods=['GET','POST'])
def login():
    form = LoginForm()
    if form.validate_on_submit():
        user = form.data['user']
        passwd = form.data['passwd']

        u = User.query.filter_by(name=user).first()
        if u.pwd==passwd:
            session['user']=u.name
            session['user_id']=u.id
            # session['user_id']=u.id
            userlog=Userlog(
            user_id=u.id
            )
            db.session.add(userlog)
            db.session.commit()
            return redirect(url_for('todo_list'))
        else:
            return render_template('login.html', form=form, message='用户名或密码错误')
    return render_template('login.html', form=form)

@app.route('/register/',methods=['GET','POST'])
def register():
    form=RegisterForm()
    if form.validate_on_submit():
        user=form.data['user']
        passwd=form.data['passwd']
        u = User(name=user, pwd=passwd, department_id=1)
        db.session.add(u)
        db.session.commit()
        return redirect(url_for('login'))
    return render_template('register.html',form=form)

@app.route('/logout/')
def logout():
    return redirect(url_for('index'))

# 任务的增删改查

@app.route('/todo/add/',methods=['POST'])
@is_login
def todo_add():
    name=request.form['todo_name']
    part=request.form['part']
    todo=Todo(name=name,department_id=part,user_id=1)
    db.session.add(todo)
    db.session.commit()
    return redirect(url_for('todo_list'))

@app.route('/todo/delete/<int:id>/')
@is_login
def todo_delete(id):
    todo=Todo.query.filter_by(id=id).first()
    db.session.delete(todo)
    db.session.commit()
    return redirect(url_for('todo_list'))


@app.route('/list/')
def todo_list():
    #从数据库中查询
    todos=Todo.query.all()
    parts=Department.query.all()
    return render_template('list.html',
                           todos=todos,
                           parts=parts
                           )
# 修改任务状态

@app.route('/todo/undo/<int:id>/')
@is_login
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>/')
@is_login
def done(id):
    todo = Todo.query.filter_by(id=id).first()
    todo.status = True
    db.sessi
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值