基于Python的Django个人记账管理系统

引言

在当今快节奏的生活中,个人财务管理显得尤为重要。为了帮助人们更好地管理自己的日常开支,我开发了一套基于Python的Django框架的个人记账管理系统。该系统具备简单易用的特点,用户可以轻松记录和查询自己的收支情况。本文将介绍该系统的主要功能、设计思路以及部分代码示例,方便有需要的朋友进行学习和使用。

系统功能

该个人记账管理系统具有以下主要功能:

  1. 用户注册与登录:用户可以通过系统进行注册,注册后可以使用账号和密码登录系统。
  2. 记账功能:用户可以添加收入或支出,记录每笔交易的金额、类别和备注。
  3. 查询与统计:用户可以查看和统计自己的收支情况,通过日期和类别进行筛选。
  4. 数据可视化:系统提供简单的图表展示功能,帮助用户更直观地了解自己的消费情况。

技术栈

  • 后端: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开发感兴趣,欢迎下载源码并进行学习!

点赞(0) 打赏

微信小程序

微信扫一扫体验

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部