基于Flask的任务清单管理系统

本项目使用Flask、Mariadb和Bootstrap构建任务清单管理系统,实现日期时间的本地化和Echarts图表的动态可视化。介绍了Flask-Moment的原理与实现,以及Flask整合pyecharts和Echarts的方法。
摘要由CSDN通过智能技术生成

1.目标

本项目将学习 Mariadb 作为数据库后端,Bootstrap 作为前端的技术栈,并实现一个清单应用。从中我们可以学习 Flask Web 应用框架,及 Mariadb 关系型数据库和 BootStrap web开发框架。

2.项目介绍

本应用修改自 TodoMVC 的 todo list 应用,使用 Mariadb 作为数据库后端,Bootstrap 作为前端的 Flask 应用。先给它起个好听的名字吧,方便之后称呼。

todo list => (自定义,随便起名称) => todoest

就像一般的 todo list 应用一样,todoest 实现了以下功能:

  • 管理数据库连接
  • 列出所有的 todo 项
  • 创建新的 todo
  • 检索单个 todo
  • 编辑单个 todo 或将其标记为已完成
  • 删除单个 todo

3.技术分析

为什么选择Flask?
  • Flask是一个使用 Python 编写的轻量级 Web 应用框架。其 WSGI 工具箱采用 Werkzeug ,模板引擎则使用
    Jinja2 。Flask使用 BSD 授权。
  • Flask也被称为 “microframework” ,因为它使用简单的核心,用 extension
    增加其他功能。Flask没有默认使用的数据库、窗体验证工具。
  • 因此Flask是一个使用Python编写的轻量级Web应用框架。轻巧易扩展,而且够主流,有问题不怕找不到人问,最适合 todoest
    这种轻应用了。
为什么选择Mariadb?
  • MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可
  • MariaDB的目的是完全兼容MySQL,包括API和命令行,使之能轻松成为MySQL的代替品。MariaDB虽然被视为MySQL数据库的替代品,但它在扩展功能、存储引擎以及一些新的功能改进方面都强过MySQL。而且从MySQL迁移到MariaDB也是非常简单的.
为什么选择Bootstrap?
  • Bootstrap是美国Twitter公司的设计师Mark Otto和Jacob
    Thornton合作基于HTML、CSS、JavaScript 开发的简洁、直观、强悍的前端开发框架,使得 Web 开发更加快捷。
  • Bootstrap中包含了丰富的Web组件,根据这些组件,可以快速的搭建一个漂亮、功能完备的网站。其中包括以下组件:下拉菜单、按钮组、按钮下拉菜单、导航、导航条、路径导航、分页、排版、缩略图、警告对话框、进度条、媒体对象等

项目内容

在这里插入图片描述
init.py

from flask import Flask

from flask_sqlalchemy import SQLAlchemy
from flask_script import Manager
from flask_bootstrap import Bootstrap
from flask_migrate import Migrate
from flask_moment import Moment

import pymysql

app = Flask(__name__)

pymysql.install_as_MySQLdb() #解决数据库报错问题
app.config.from_pyfile('../config.py')
db = SQLAlchemy(app)
manager = Manager(app)
bt = Bootstrap(app)
migrate = Migrate(app,db)
moment = Moment(app)

forms.py(web表单)

from flask_wtf import FlaskForm
from wtforms import StringField, PasswordField, SubmitField, SelectField, DateField
from wtforms.validators import DataRequired, Email, Length, EqualTo, ValidationError

# 注册表单
from app.models import User, Category


class RegisterForm(FlaskForm):
    email = StringField(
        label='邮箱',
        validators=[
            DataRequired(),  # 不能为空
            Email(),  # 邮箱格式
        ]
    )
    username = StringField(
        label='用户名',
        validators=[
            DataRequired(),
        ]
    )
    password = PasswordField(
        label='密码',
        validators=[
            DataRequired(),
            Length(6, 12, '密码必须为6-12位')
        ]
    )
    repassword = PasswordField(
        label='确认密码',
        validators=[
            EqualTo('password', '两次密码输入不一致')
        ]
    )
    submit = SubmitField(
        label='注册'
    )

    # 默认情况下validate_username会验证用户名是否正确,验证的规则写在函数中
    def validate_username(self, field):
        # field.data==username表单提交的内容
        u = User.query.filter_by(username=field.data).first()
        if u:
            raise ValidationError('用户名%s已经注册' % (u.username))  # username 数据库中所存数据

    def validate_email(self, field):
        u = User.query.filter_by(email=field.data).first()
        if u:
            raise ValidationError('邮箱%s已经注册' % (u.email))


# 登录表单
class LoginForm(FlaskForm):
    username = StringField(
        label='用户名',
        validators=[
            DataRequired(),
        ]
    )
    password = PasswordField(
        label='密码',
        validators=[
            DataRequired(),

        ]
    )
    submit = SubmitField(
        label='登录',

    )


# 关于任务的基类
class TodoForm(Fla
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值