使用Python构建一个简单的Web应用:从零开始的Flask项目实战

今天 5阅读

在现代软件开发中,Web 应用已经成为不可或缺的一部分。无论是企业级管理系统、社交平台还是个人博客,Web 技术都提供了强大的支持。本文将带你从零开始,使用 Python 的轻量级 Web 框架 Flask 构建一个简单的 Web 应用程序,并展示如何实现基本的 CRUD(创建、读取、更新、删除)功能。

我们将使用 Python 3、Flask 框架以及 SQLite 数据库来完成这个项目。通过本文,你将掌握:

如何搭建 Flask 开发环境如何创建基本的 Web 页面如何与数据库交互如何实现数据的增删改查功能

环境准备

首先,确保你的系统已经安装了 Python 3.x 版本。你可以通过命令行输入以下命令来检查:

python --version

如果没有安装 Flask,请使用 pip 安装:

pip install flask

此外,我们还将使用 sqlite3 模块,它是 Python 标准库的一部分,无需额外安装。


创建项目结构

我们将创建一个简单的待办事项(To-Do List)应用程序。项目结构如下:

todo_app/│├── app.py              # 主程序文件├── database.db         # SQLite 数据库文件├── templates/          # 存放HTML模板│   └── index.html└── static/             # 存放静态资源(CSS、JS等)    └── style.css

第一步:初始化 Flask 应用

创建 app.py 文件并添加以下代码:

from flask import Flask, render_template, request, redirect, url_forimport sqlite3app = Flask(__name__)DATABASE = 'database.db'def get_db():    conn = sqlite3.connect(DATABASE)    conn.row_factory = sqlite3.Row    return conndef init_db():    db = get_db()    with app.open_resource('schema.sql', mode='r') as f:        db.cursor().executescript(f.read())    db.commit()@app.route('/')def index():    db = get_db()    todos = db.execute('SELECT * FROM todos').fetchall()    return render_template('index.html', todos=todos)@app.route('/add', methods=['POST'])def add():    title = request.form['title']    db = get_db()    db.execute('INSERT INTO todos (title) VALUES (?)', (title,))    db.commit()    return redirect(url_for('index'))@app.route('/delete/<int:id>')def delete(id):    db = get_db()    db.execute('DELETE FROM todos WHERE id = ?', (id,))    db.commit()    return redirect(url_for('index'))@app.route('/toggle/<int:id>')def toggle(id):    db = get_db()    todo = db.execute('SELECT * FROM todos WHERE id = ?', (id,)).fetchone()    done = not todo['done']    db.execute('UPDATE todos SET done = ? WHERE id = ?', (done, id))    db.commit()    return redirect(url_for('index'))if __name__ == '__main__':    init_db()    app.run(debug=True)

创建数据库模式

创建 schema.sql 文件,定义我们的待办事项表结构:

DROP TABLE IF EXISTS todos;CREATE TABLE todos (    id INTEGER PRIMARY KEY AUTOINCREMENT,    title TEXT NOT NULL,    done BOOLEAN NOT NULL DEFAULT 0);

创建 HTML 模板

templates 目录下创建 index.html 文件:

<!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8">    <title>To-Do List</title>    <link rel="stylesheet" href="{{ url_for('static', filename='style.css') }}"></head><body>    <h1>我的待办事项</h1>    <form action="/add" method="post">        <input type="text" name="title" placeholder="添加新任务..." required>        <button type="submit">添加</button>    </form>    <ul>        {% for todo in todos %}            <li class="{% if todo.done %}done{% endif %}">                <a href="/toggle/{{ todo.id }}">{{ todo.title }}</a>                <a href="/delete/{{ todo.id }}" class="delete">[删除]</a>            </li>        {% endfor %}    </ul></body></html>

添加样式文件

static 目录下创建 style.css 文件:

body {    font-family: Arial, sans-serif;    margin: 40px;}h1 {    color: #333;}form input[type="text"] {    padding: 5px;    width: 200px;}form button {    padding: 5px 10px;}ul {    list-style: none;    padding-left: 0;    margin-top: 20px;}li {    margin-bottom: 10px;}li.done {    text-decoration: line-through;    color: gray;}.delete {    color: red;    margin-left: 10px;}

运行应用

现在你可以在终端中运行应用:

python app.py

访问 http://127.0.0.1:5000/ 即可看到你的待办事项页面。你可以添加任务、标记为完成或删除任务。


项目扩展建议

虽然目前的功能已经满足基本需求,但你还可以继续扩展这个项目:

用户认证:添加登录注册功能,每个用户拥有自己的待办列表。前端增强:使用 JavaScript 实现无刷新操作,提升用户体验。部署上线:将项目部署到云服务器或 Heroku 等平台。使用 ORM:尝试使用 SQLAlchemy 替代原生 SQL,提高代码可维护性。REST API 接口:为移动端或其他客户端提供接口支持。

总结

通过本文,你已经学会了如何使用 Flask 构建一个完整的 Web 应用,并实现了基本的数据操作功能。Flask 是一个非常灵活且适合初学者的框架,它可以帮助你快速上手 Web 开发。随着项目的深入,你可以不断引入新的技术和工具来提升应用的功能和性能。

希望这篇文章对你学习 Python Web 开发有所帮助!如果你有任何问题,欢迎留言讨论。

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

目录[+]

您是本站第38967名访客 今日有30篇新文章

微信号复制成功

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