使用Python构建一个简单的Web应用:从零开始的Flask项目实战
在现代软件开发中,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 开发有所帮助!如果你有任何问题,欢迎留言讨论。