使用Python构建一个简单的Web应用:Flask + 数据库操作

今天 4阅读

在现代的Web开发中,使用后端框架来快速构建功能完整的应用程序是一种非常常见的做法。Python 提供了许多优秀的 Web 框架,其中 Flask 是一个轻量级、灵活且易于上手的选择。

本文将介绍如何使用 Flask 构建一个简单的 Web 应用程序,并结合 SQLite 数据库实现基本的数据持久化功能。我们将逐步讲解:

安装 Flask 及相关依赖 创建 Flask 项目结构 配置 SQLite 数据库 实现增删改查(CRUD)功能 运行和测试应用

最终效果是一个简单的“任务管理”系统,用户可以添加、查看、编辑和删除任务。


环境准备

安装 Flask 和数据库插件

我们使用 pip 来安装所需的库:

pip install flask flask-sqlalchemy
flask:核心框架 flask-sqlalchemy:用于简化 SQLAlchemy 在 Flask 中的操作

项目结构

为了保持代码整洁,我们可以创建如下目录结构:

task_manager/│├── app.py              # 主程序文件├── models.py           # 数据模型定义├── routes.py           # 路由处理逻辑└── templates/          # 存放HTML模板    └── index.html

创建 Flask 应用主程序 (app.py)

from flask import Flaskfrom flask_sqlalchemy import SQLAlchemyapp = Flask(__name__)app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///tasks.db'app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = Falsedb = SQLAlchemy(app)from routes import *if __name__ == '__main__':    with app.app_context():        db.create_all()    app.run(debug=True)

这段代码做了以下几件事:

初始化 Flask 应用 配置 SQLAlchemy 使用 SQLite 数据库(文件名为 tasks.db) 加载路由模块 启动应用并开启调试模式 使用 with app.app_context() 确保在应用上下文中创建数据库表

定义数据模型 (models.py)

from app import dbclass Task(db.Model):    id = db.Column(db.Integer, primary_key=True)    title = db.Column(db.String(100), nullable=False)    description = db.Column(db.Text, nullable=True)    done = db.Column(db.Boolean, default=False)    def __repr__(self):        return f'<Task {self.id}>'

这里我们定义了一个 Task 模型,包含字段:

id: 唯一标识符(主键) title: 任务标题 description: 描述内容(可为空) done: 是否完成,默认为 False

编写路由与业务逻辑 (routes.py)

from flask import render_template, request, redirect, url_forfrom app import app, dbfrom models import Task@app.route('/')def index():    tasks = Task.query.all()    return render_template('index.html', tasks=tasks)@app.route('/add', methods=['POST'])def add_task():    title = request.form.get('title')    description = request.form.get('description')    new_task = Task(title=title, description=description)    db.session.add(new_task)    db.session.commit()    return redirect(url_for('index'))@app.route('/toggle/<int:task_id>')def toggle_task(task_id):    task = Task.query.get(task_id)    task.done = not task.done    db.session.commit()    return redirect(url_for('index'))@app.route('/delete/<int:task_id>')def delete_task(task_id):    task = Task.query.get(task_id)    db.session.delete(task)    db.session.commit()    return redirect(url_for('index'))

以上代码实现了四个主要功能:

/:首页展示所有任务 /add:接收 POST 请求添加新任务 /toggle/<id>:切换任务完成状态 /delete/<id>:删除指定任务

创建前端模板 (templates/index.html)

使用 Jinja2 模板引擎渲染页面内容:

<!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8">    <title>任务管理系统</title>    <style>        body { font-family: Arial; padding: 20px; }        .task { margin-bottom: 10px; }        .done { text-decoration: line-through; color: gray; }    </style></head><body><h1>我的任务列表</h1><form action="/add" method="post">    <input type="text" name="title" placeholder="任务标题" required>    <br>    <textarea name="description" placeholder="描述(可选)"></textarea>    <br>    <button type="submit">添加任务</button></form><hr>{% for task in tasks %}<div class="task {{ 'done' if task.done else '' }}">    <strong>{{ task.title }}</strong>    {% if task.description %}    <p>{{ task.description }}</p>    {% endif %}    <small>状态:        {% if task.done %}            已完成 ✅        {% else %}            未完成 ❌        {% endif %}    </small><br>    <a href="{{ url_for('toggle_task', task_id=task.id) }}">切换状态</a> |    <a href="{{ url_for('delete_task', task_id=task.id) }}">删除</a></div>{% endfor %}</body></html>

运行项目

确保你位于项目根目录下,执行:

python app.py

打开浏览器访问 http://127.0.0.1:5000 即可看到任务管理界面。


扩展建议

你可以在此基础上继续扩展更多功能,例如:

用户登录认证(使用 Flask-Login) 分页显示任务列表 使用 Bootstrap 美化前端界面 添加 RESTful API 接口 使用 MySQL 或 PostgreSQL 替代 SQLite

总结

通过本文的学习,你已经掌握了使用 Flask 框架结合 SQLAlchemy 实现简单 Web 应用的方法。该应用具备了基本的 CRUD 功能,并展示了前后端交互的过程。

Flask 的灵活性使得它非常适合初学者入门 Web 开发,同时也足够强大以支持复杂的生产级应用。希望你能继续深入学习,打造属于自己的完整项目!


如需获取完整源码,请关注后续文章或访问我的 GitHub 仓库。

免责声明:本文来自网站作者,不代表CIUIC的观点和立场,本站所发布的一切资源仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。客服邮箱:ciuic@ciuic.com

目录[+]

您是本站第80608名访客 今日有18篇新文章

微信号复制成功

打开微信,点击右上角"+"号,添加朋友,粘贴微信号,搜索即可!