القائمة الرئيسية

الصفحات

كيفية برمجة تطبيق تسجيل مصاريف يومية باستخدام Python Django

daily expense tracking app، How-to-code-daily-expense-tracking-app-in-Python-Django، How to code a daily expense tracking app using Python and Django، كيفية برمجة تطبيق تسجيل مصاريف يومية باستخدام Python Django، تطبيق تسجيل مصاريف يومية، برمجة تطبيق تسجيل مصاريف يومية، python django، دجانغو، جانغو، كيفية برمجة تطبيق تسجيل مصاريف يومية باستخدام Python Django، Django ForeignKey، إنشاء مشروع Django للمصروفات، python، برمجة تطبيق مصاريف يومية Python، تطوير تطبيق تتبع المصروفات Django، إنشاء تطبيق تسجيل نفقات Python، واجهة مستخدم تسجيل مصاريف Django، نماذج Django للمصروفات والفئات والمستخدمين، عرض المصروفات وتفاصيلها Django، إضافة مصروفات جديدة Django، حفظ بيانات المصروفات Django، تصفية المصروفات حسب التاريخ والفئة Django، نظام مستخدمين Django، مصادقة المستخدم Django، نشر تطبيق تسجيل مصاريف Django، إعداد Django لتطبيق المصروفات، إنشاء مشروع Django للمصروفات، نماذج Django للمصروفات، نماذج Django للفئات، نماذج Django للمستخدمين، علاقات Django ForeignKey، قوالب Django لعرض المصروفات وإضافتها، نماذج Django Forms لإضافة المصروفات، طرق عرض Django لعرض وإضافة وتصفية المصروفات، مسارات URL Django لتطبيق المصروفات، Django Admin لإدارة الفئات والمصروفات، نشر تطبيقات Django باستخدام Gunicorn و Nginx،





كيفية برمجة تطبيق تسجيل مصاريف يومية باستخدام Python Django



تتبع المصاريف اليومية يساعد الأفراد على إدارة أموالهم بكفاءة أكبر. 
إذا كنت تطمح لتعلم كيفية برمجة تطبيق تسجيل مصاريف يومية بسيط باستخدام 
Python Django، فأنت في المكان الصحيح. هذا الدليل الشامل سيأخذك خطوة
 بخطوة خلال عملية إنشاء تطبيق ويب سهل الاستخدام لتسجيل وتتبع نفقاتك.
 سنتناول كل شيء بدءًا من تصميم واجهة مستخدم بسيطة لإدخال وعرض المصروفات، 
مرورًا بتعريف نماذج البيانات لتخزين معلومات المصروفات والفئات والمستخدمين،
 وصولًا إلى تمكين المستخدمين من إضافة مصروفات جديدة و حفظ بيانات المصروفات،
 وتنفيذ وظائف التصفية حسب التاريخ والفئة، وإنشاء نظام مستخدمين أساسي، وأخيرًا
 نشر التطبيق ليصبح متاحًا للاستخدام الشخصي أو مشاركته. انطلق معنا في هذه الرحلة 
لتعلم كيفية برمجة تطبيق تسجيل مصاريف يومية باستخدام Python Django بطريقة عملية ومنظمة.


خطوات برمجة تطبيق تسجيل مصاريف يومية باستخدام Python Django



الخطوة 1: إعداد بيئة التطوير وإنشاء مشروع Django

* تأكد من تثبيت Python و pip على جهازك. ثم قم بتثبيت Django:
pip install django
--
* أنشئ مشروع Django جديدًا باسم expense_tracker:
django-admin startproject expense_tracker
cd expense_tracker
--
* أنشئ تطبيقًا داخل المشروع باسم expenses:
python manage.py startapp expenses
--

الخطوة 2: تعريف نماذج البيانات (Models)

في ملف expenses/models.py، سنقوم بتعريف نماذج البيانات الأساسية للمصروفات والفئات:




Python

from django.db import models
from django.contrib.auth.models import User
from django.utils.text import slugify

class Category(models.Model):
    name = models.CharField(max_length=100, unique=True)
    slug = models.SlugField(max_length=100, unique=True, blank=True)

    class Meta:
        verbose_name_plural = 'Categories'

    def __str__(self):
        return self.name

    def save(self, *args, **kwargs):
        if not self.slug:
            self.slug = slugify(self.name)
        super().save(*args, **kwargs)

class Expense(models.Model):
    user = models.ForeignKey(User, on_delete=models.CASCADE)
    category = models.ForeignKey(Category, on_delete=models.CASCADE)
    amount = models.DecimalField(max_digits=10, decimal_places=2)
    description = models.CharField(max_length=255, blank=True, null=True)
    date = models.DateField()
    created_at = models.DateTimeField(auto_now_add=True)

    class Meta:
        ordering = ['-date']

    def __str__(self):
        return f"{self.date} - {self.category.name} - {self.amount}"


--

* أضف تطبيق expenses إلى قائمة INSTALLED_APPS في
 ملف expense_tracker/settings.py:

Python

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'expenses', # إضافة تطبيق expenses هنا
]
--

* قم بإنشاء التغييرات وتنفيذها :
python manage.py makemigrations expenses
python manage.py migrate
--

الخطوة 3: إنشاء واجهة المستخدم (Templates)

أنشئ مجلدًا باسم templates داخل مجلد تطبيق expenses. 




ثم أنشئ ملفات HTML التالية:
* expenses/templates/expenses/expense_list.html: 
لعرض قائمة المصروفات ونموذج الإضافة:




HTML

<!DOCTYPE html>
<html>
<head>
    <title>تتبع المصاريف</title>
</head>
<body>
    <h1>مصاريفك اليومية</h1>
    <ul>
        {% for expense in expenses %}
            <li>{{ expense.date }} - {{ expense.category.name }} - {{ expense.amount }} {% if expense.description %} ({{ expense.description }}) {% endif %}</li>
        {% empty %}
            <li>لا توجد مصروفات مسجلة حتى الآن.</li>
        {% endfor %}
    </ul>

    <h2>إضافة مصروف جديد</h2>
    <form method="post">
        {% csrf_token %}
        {{ form.as_p }}
        <button type="submit">إضافة مصروف</button>
    </form>
</body>
</html>


--

الخطوة 4: إنشاء النماذج (Forms)

في ملف expenses/forms.py (إذا لم يكن موجودًا، قم بإنشائه):
Python

from django import forms
from .models import Expense
class AddExpenseForm(forms.ModelForm):
    class Meta:
        model = Expense
        fields = ['category', 'amount', 'description', 'date']
        widgets = {
            'date': forms.DateInput(attrs={'type': 'date'})
        }
--

الخطوة 5: إنشاء طرق العرض (Views)

* في ملف expenses/views.py :




Python

from django.shortcuts import render, redirect
from .models import Expense
from .forms import AddExpenseForm
from django.contrib.auth.decorators import login_required

@login_required
def expense_list(request):
    expenses = Expense.objects.filter(user=request.user).order_by('-date')
    form = AddExpenseForm()
    if request.method == 'POST':
        form = AddExpenseForm(request.POST)
        if form.is_valid():
            expense = form.save(commit=False)
            expense.user = request.user
            expense.save()
            return redirect('expense_list')
    return render(request, 'expenses/expense_list.html', {'expenses': expenses, 'form': form})


--

الخطوة 6: تعريف مسارات URL (URLs)

في ملف expenses/urls.py (إذا لم يكن موجودًا، قم بإنشائه):
Python

from django.urls import path
from . import views
urlpatterns = [
    path('', views.expense_list, name='expense_list'),
]
--

* قم بتضمين مسارات تطبيق expenses في ملف expense_tracker/urls.py :
Python

from django.contrib import admin
from django.urls import path, include
from django.shortcuts import redirect

urlpatterns = [
    path('admin/', admin.site.urls),
    path('expenses/', include('expenses.urls')),
    path('accounts/', include('django.contrib.auth.urls')), # لتسجيل الدخول والخروج
    path('', lambda request: redirect('/expenses/')), # إعادة التوجيه إلى قائمة المصروفات عند الوصول إلى الجذر
]
--

تأكد من إضافة 'django.contrib.auth' إلى INSTALLED_APPS في settings.py.




الخطوة 7: إنشاء واجهة إدارة (Django Admin)

لتسهيل إدارة الفئات والمصروفات، قم بتسجيل النماذج في Django Admin في
 ملف expenses/admin.py:




Python

from django.contrib import admin
from .models import Expense, Category

@admin.register(Category)
class CategoryAdmin(admin.ModelAdmin):
    list_display = ('name', 'slug')
    prepopulated_fields = {'slug': ('name',)}

@admin.register(Expense)
class ExpenseAdmin(admin.ModelAdmin):
    list_display = ('date', 'user', 'category', 'amount', 'description', 'created_at')
    list_filter = ('user', 'category', 'date')
    search_fields = ('description',)


--

* قم بإنشاء مستخدم مسؤول إذا لم يكن لديك واحدًا بالفعل:
python manage.py createsuperuser
--
ثم قم بتشغيل خادم التطوير وقم بزيارة http://127.0.0.1:8000/admin/
 لتسجيل الدخول وإدارة الفئات والمصروفات.

الخطوة 8: حفظ بيانات المصروفات

يتم حفظ بيانات المصروفات عند تقديم نموذج إضافة المصروف
 (AddExpenseForm) في طريقة العرض expense_list. يتم إنشاء كائن
 Expense جديد مرتبط بالمستخدم والفئة والمبلغ والتاريخ والوصف.
 Django ORM يتولى عملية التفاعل مع قاعدة البيانات وحفظ البيانات بناءً على تعريف النماذج والعلاقات بينها.

الخطوة 9: نشر التطبيق

لنشر تطبيق Django، يمكنك اتباع الخطوات العامة التالية 
(باستخدام Gunicorn و Nginx كمثال):
* تثبيت Gunicorn :
pip install gunicorn
--
* اختبار Gunicorn : انتقل إلى مجلد مشروع Django وقم بتشغيل :
gunicorn expense_tracker.wsgi:application
--
* تثبيت Nginx :
sudo apt update
sudo apt install nginx
--
* تكوين Nginx : قم بإنشاء ملف تكوين جديد للموقع الخاص بك في /etc/nginx/sites-available/ (مثل expense_tracker) وقم بربطه بـ /etc/nginx/sites-enabled/. 
مثال على التكوين:
Nginx

server {
    listen 80;
    server_name your_domain_or_IP;
    location /static/ {
        alias /path/to/your/project/staticfiles/;
    }
    location / {
        proxy_pass [http://127.0.0.1:8000](http://127.0.0.1:8000);
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}
--

* استبدل your_domain_or_IP بعنوان نطاقك أو عنوان IP الخاص
 بالخادم، و /path/to/your/project/staticfiles/ بالمسار الفعلي لمجلد الملفات الثابتة .

* جمع الملفات الثابتة :
python manage.py collectstatic
--
تكوين نظام إدارة العمليات (مثل systemd) لتشغيل Gunicorn تلقائيًا.

* إعادة تشغيل Nginx :
sudo systemctl restart nginx
--
تأمين الخادم الخاص بك (مثل إعداد جدار حماية وتكوين HTTPS باستخدام Let's Encrypt).

* الخلاصة :

لقد استعرضنا الخطوات الأساسية لبرمجة تطبيق تسجيل مصاريف
 يومية بسيط باستخدام Python Django، بدءًا من إنشاء واجهة مستخدم أساسي
ة لعرض وإضافة المصروفات، مرورًا بتعريف نماذج البيانات للمصروفات والفئات، 
وصولًا إلى تمكين المستخدمين من إضافة المصروفات و حفظ بياناتها وعرضها وتصفيتها،
 وتقديم نظرة عامة على عملية نشر التطبيق. يمكنك الآن تطوير هذا التطبيق بإضافة
 المزيد من الميزات مثل عرض رسوم بيانية للمصروفات، وتصدير البيانات، وإضافة أنواع أخرى من الفلاتر،
 وتخصيص واجهة المستخدم بشكل أكبر. تذكر دائمًا التركيز على أمان التطبيق وحماية بيانات المستخدمين.



جدول المحتويات