基于Python的Django个人记账管理系统
引言
在当今快节奏的生活中,个人财务管理显得尤为重要。为了帮助人们更好地管理自己的日常开支,我开发了一套基于Python的Django框架的个人记账管理系统。该系统具备简单易用的特点,用户可以轻松记录和查询自己的收支情况。本文将介绍该系统的主要功能、设计思路以及部分代码示例,方便有需要的朋友进行学习和使用。
系统功能
该个人记账管理系统具有以下主要功能:
- 用户注册与登录:用户可以通过系统进行注册,注册后可以使用账号和密码登录系统。
- 记账功能:用户可以添加收入或支出,记录每笔交易的金额、类别和备注。
- 查询与统计:用户可以查看和统计自己的收支情况,通过日期和类别进行筛选。
- 数据可视化:系统提供简单的图表展示功能,帮助用户更直观地了解自己的消费情况。
技术栈
- 后端:Python, Django
- 数据库:SQLite
- 前端:HTML, CSS, JavaScript
项目文件结构
personal_accounting/
├── manage.py
├── personal_accounting/
│ ├── settings.py
│ ├── urls.py
│ ├── wsgi.py
├── accounting/
│ ├── migrations/
│ ├── models.py
│ ├── views.py
│ ├── templates/
│ └── forms.py
└── db.sqlite3
代码示例
1. 用户模型
在models.py
中,我们定义了用户模型及记账模型:
from django.db import models
from django.contrib.auth.models import User
class Transaction(models.Model):
TRANSACTION_TYPE = [
('income', '收入'),
('expense', '支出'),
]
user = models.ForeignKey(User, on_delete=models.CASCADE) # 关联用户
amount = models.DecimalField(max_digits=10, decimal_places=2) # 金额
transaction_type = models.CharField(max_length=7, choices=TRANSACTION_TYPE) # 交易类型
category = models.CharField(max_length=50) # 类别
description = models.TextField(blank=True, null=True) # 描述
date = models.DateTimeField(auto_now_add=True) # 日期
def __str__(self):
return f"{self.user.username} - {self.transaction_type} - {self.amount}"
2. 记账视图
在views.py
中,我们实现了添加记账的功能:
from django.shortcuts import render, redirect
from .forms import TransactionForm
from .models import Transaction
def add_transaction(request):
if request.method == "POST":
form = TransactionForm(request.POST)
if form.is_valid():
transaction = form.save(commit=False)
transaction.user = request.user # 绑定当前用户
transaction.save()
return redirect('transaction_list') # 跳转到交易列表
else:
form = TransactionForm()
return render(request, 'add_transaction.html', {'form': form})
3. 数据统计
我们可以利用Django的聚合查询来获取数据统计:
from django.db.models import Sum
def transaction_statistic(request):
totals = Transaction.objects.filter(user=request.user).aggregate(Sum('amount'))
return render(request, 'statistic.html', {'totals': totals})
总结
以上是基于Python的Django个人记账管理系统的简单介绍和代码示例。通过这个系统,用户可以方便地进行个人财务管理。实际开发中还可以根据需求进一步扩展功能,比如增加图表展示、导出报表等。在此希望大家能够根据这套源码自主探索,实现更多的功能和改进。如果你对Django开发感兴趣,欢迎下载源码并进行学习!