当前位置:   article > 正文

基于Flask的任务清单管理系统_python实例开发任务管理系统

python实例开发任务管理系统

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)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19

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(),

        ]
    )
    sub
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/寸_铁/article/detail/788197
推荐阅读
相关标签
  

闽ICP备14008679号