前言
这篇文章将带你一步步从零开始构建一个简单的记账小工具,通过Python + Flask + Jinja2实现。即使你是个小学生也可以跟随本教程完成整个项目,每一行代码都会详细解释其作用。我们还将包括如何安装必要的库、搭建项目结构、处理数据并将其存入数据库,以及实现数据的增删改查功能。
1. 安装环境和必要库
在开始之前,我们需要安装Python和相关的Flask库。确保你已经安装了Python,如果还没有,可以在Python官网下载并安装。
安装 Flask:
pip install Flask
安装 Jinja2(它是Flask默认的模板引擎):
pip install Jinja2
安装 SQLite3(用于存储数据):
pip install sqlite3
2. 项目结构
我们会将项目组织得清晰有序。以下是项目的文件结构:
my_budget_app/ # 主项目文件夹
│
├── app.py # 主程序文件
├── templates/ # 存放HTML文件的文件夹
│ ├── base.html # 基础模板
│ ├── index.html # 显示记账数据的页面
│ ├── add.html # 添加数据的页面
├── static/ # 存放静态文件(如CSS、图片)
│ └── style.css # 页面样式
├── budget.db # SQLite3数据库
3. 搭建Flask应用
在my_budget_app文件夹下创建一个app.py文件,这是我们Flask应用的入口。
from flask import Flask, render_template, request, redirect, url_for
import sqlite3
# 创建一个 Flask 应用
app = Flask(__name__)
# 连接 SQLite 数据库
def get_db_connection():
conn = sqlite3.connect('budget.db') # 连接数据库文件 budget.db
conn.row_factory = sqlite3.Row # 设置行工厂,使得结果像字典一样访问
return conn
# 首页视图,显示所有记账条目
@app.route('/')
def index():
conn = get_db_connection() # 获取数据库连接
transactions = conn.execute('SELECT id,date,remarks,amount,category FROM transactions where deleted=0 ORDER BY date desc').fetchall() # 查询所有交易记录
print(transactions)
# 将 _sqlite3.Row 对象转换为字典并打印
for transaction in transactions:
print(dict(transaction))
conn.close() # 关闭数据库连接
return render_template('index.html', transactions=transactions) # 渲染 index.html 模板并传递交易记录
# 添加新记账条目的路由
@app.route('/add', methods=('GET', 'POST'))
def add_tran