
كيفية برمجة تطبيق تعقب العادات باستخدام Python Django
هل تتساءل عن كيفية برمجة تطبيق تعقب العادات باستخدام Python Django؟
في هذا الدليل الشامل، سنكشف الخطوات الأساسية لإنشاء تطبيق تعقب العادات بسيط
ولكنه فعال لمساعدة المستخدمين على تتبع عاداتهم اليومية.
سنبدأ بشرح كيفية تصميم وإنشاء واجهة مستخدم سهلة الاستخدام في Django لعرض
العادات وتسجيل التقدم. ثم سنتناول كيفية تعريف نماذج البيانات في Django لتخزين معلومات
العادات وسجل التتبع بشكل منظم. بعد ذلك، سنوضح كيفية حفظ هذه البيانات في قاعدة
البيانات باستخدام Django ORM. وأخيرًا، سنقدم نظرة عامة على كيفية نشر تطبيق
Django ليصبح متاحًا للمستخدمين.
تابع معنا لتتعلم كيفية برمجة تطبيق تعقب العادات باستخدام Python Django خطوة بخطوة.
خطوات برمجة تطبيق تعقب العادات باستخدام Python Django
الآن، وبعد أن وضعنا الأساس لفهم هدفنا في بناء تطبيق تعقب العادات،
سنتعمق في الخطوات العملية لتحقيق هذا الهدف.
في هذا القسم، سنقوم بتقسيم عملية تطوير هذا التطبيق إلى مراحل منظمة وواضحة.
سنبدأ بالخطوة الأولى وهي إعداد بيئة التطوير الخاصة بنا وإنشاء مشروع
Django جديد، الذي سيكون بمثابة الحاوية لتطبيقنا لتتبع العادات. هيا بنا نبدأ في
تجهيز القاعدة الصلبة التي سينطلق منها نظامنا لمساعدة المستخدمين على بناء عادات إيجابية!
الخطوة 1: إعداد بيئة التطوير وإنشاء مشروع Django
* تأكد من تثبيت Python و pip على جهازك. ثم قم بتثبيت Django:
pip install django
--
*أنشئ مشروع Django جديدًا باسم habit_tracker_app:
django-admin startproject habit_tracker_app
cd habit_tracker_app
--
*أنشئ تطبيقًا داخل المشروع باسم tracker:
python manage.py startapp tracker
--
الخطوة 2: تعريف نماذج البيانات (Models)
في ملف tracker/models.py، سنقوم بتعريف نماذج البيانات
الأساسية للعادات وسجل التتبع:
Python
from django.db import modelsfrom django.contrib.auth.models import Userfrom django.utils import timezone
class Habit(models.Model): user = models.ForeignKey(User, on_delete=models.CASCADE) name = models.CharField(max_length=255) description = models.TextField(blank=True, null=True) created_at = models.DateTimeField(auto_now_add=True)
def __str__(self): return self.name
class HabitRecord(models.Model): habit = models.ForeignKey(Habit, on_delete=models.CASCADE) date = models.DateField(default=timezone.now) completed = models.BooleanField(default=False)
class Meta: unique_together = ('habit', 'date') # منع تسجيل التقدم لنفس العادة في نفس اليوم مرتين ordering = ['-date']
def __str__(self): return f"{self.habit.name} - {self.date}"
* أضف تطبيق tracker إلى قائمة INSTALLED_APPS في
ملف habit_tracker_app/settings.py :
Python
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'tracker', # إضافة تطبيق tracker هنا
]
--
* قم بإنشاء التغييرات وتنفيذها :
python manage.py makemigrations tracker
python manage.manage.py migrate
--
الخطوة 3: إنشاء واجهة المستخدم (Templates)
أنشئ مجلدًا باسم templates داخل مجلد تطبيق tracker. ثم أنشئ ملفات HTML التالية:
* tracker/templates/tracker/habit_list.html:
لعرض قائمة العادات وتسجيل التقدم :
HTML
<!DOCTYPE html><html><head> <title>متعقب العادات</title></head><body> <h1>عاداتي</h1> <ul> {% for habit in habits %} <li> {{ habit.name }} <form method="post" action="{% url 'toggle_habit' habit.id %}"> {% csrf_token %} <input type="checkbox" name="completed" {% if habit.habitrecord_set.filter(date=today).first.completed %}checked{% endif %} onchange="this.form.submit()"> <label for="completed">تم اليوم</label> </form> </li> {% empty %} <li>لا توجد عادات مضافة حتى الآن.</li> {% endfor %} </ul> <p><a href="{% url 'add_habit' %}">إضافة عادة جديدة</a></p></body></html>
* tracker/templates/tracker/add_habit.html:
لنموذج إضافة عادة جديدة :
HTML
<!DOCTYPE html>
<html>
<head>
<title>إضافة عادة جديدة</title>
</head>
<body>
<h1>إضافة عادة جديدة</h1>
<form method="post">
{% csrf_token %}
{{ form.as_p }}
<button type="submit">حفظ العادة</button>
</form>
<p><a href="{% url 'habit_list' %}">العودة إلى قائمة العادات</a></p>
</body>
</html>
--
الخطوة 4: إنشاء النماذج (Forms)
في ملف tracker/forms.py (إذا لم يكن موجودًا، قم بإنشائه) :
Python
from django import forms
from .models import Habit
class HabitForm(forms.ModelForm):
class Meta:
model = Habit
fields = ['name', 'description']
--
الخطوة 5: إنشاء طرق العرض (Views)
في ملف tracker/views.py، سنقوم بإنشاء طرق العرض التي تتحكم
في منطق التطبيق وتعرض القوالب :
Python
from django.shortcuts import render, redirect, get_object_or_404from django.contrib.auth.decorators import login_requiredfrom django.utils import timezonefrom .models import Habit, HabitRecordfrom .forms import HabitForm
@login_requireddef habit_list(request): habits = Habit.objects.filter(user=request.user) today = timezone.now().date() context = {'habits': habits, 'today': today} return render(request, 'tracker/habit_list.html', context)
@login_requireddef add_habit(request): if request.method == 'POST': form = HabitForm(request.POST) if form.is_valid(): habit = form.save(commit=False) habit.user = request.user habit.save() return redirect('habit_list') else: form = HabitForm() context = {'form': form} return render(request, 'tracker/add_habit.html', context)
@login_requireddef toggle_habit(request, habit_id): habit = get_object_or_404(Habit, id=habit_id, user=request.user) today = timezone.now().date() record, created = HabitRecord.objects.get_or_create(habit=habit, date=today) record.completed = not record.completed record.save() return redirect('habit_list')
** ملاحظة : تتطلب هذه الطرق تسجيل دخول المستخدم. تأكد من إعداد نظام
مصادقة المستخدم في Django (يمكن استخدام تطبيق django.contrib.auth).
الخطوة 6: تعريف مسارات URL (URLs)
في ملف tracker/urls.py (إذا لم يكن موجودًا، قم بإنشائه):
Python
from django.urls import path
from . import views
urlpatterns = [
path('', views.habit_list, name='habit_list'),
path('add/', views.add_habit, name='add_habit'),
path('toggle/<int:habit_id>/', views.toggle_habit, name='toggle_habit'),
]
--
* قم بتضمين مسارات تطبيق tracker في ملف habit_tracker_app/urls.py:
Python
from django.contrib import admin
from django.urls import path, include
urlpatterns = [
path('admin/', admin.site.urls),
path('accounts/', include('django.contrib.auth.urls')), # لتسجيل الدخول والخروج
path('', include('tracker.urls')), # تضمين مسارات تطبيق tracker
]
--
الخطوة 7: تفعيل مصادقة المستخدم (اختياري ولكن موصى به)
إذا لم تقم بذلك بالفعل، قم بتفعيل تطبيق django.contrib.auth وتكوين
مسارات تسجيل الدخول والخروج في ملف habit_tracker_app/urls.py كما
هو موضح أعلاه. يمكنك أيضًا إنشاء قوالب تسجيل الدخول (login.html) وتسجيل
المستخدم (registration/register.html) إذا كنت ترغب في توفير تسجيل مستخدم جديد.
الخطوة 8: حفظ النقاط (بيانات العادات وسجل التتبع)
لقد قمنا بالفعل بحفظ بيانات العادات وسجل التتبع في قاعدة البيانات في طرق
العرض add_habit و toggle_habit في ملف tracker/views.py.
يتم إنشاء سجلات جديدة في نماذج Habit و HabitRecord لتخزين
معلومات العادات والتقدم اليومي.
الخطوة 9: نشر التطبيق
لنشر تطبيق Django، يمكنك اتباع نفس الخطوات العامة المذكورة في
قسم النشر في مثال المتجر الإلكتروني البسيط (باستخدام Gunicorn و Nginx أو
أي خادم ويب و WSGI آخر تفضله). تأكد من تكوين خادم الويب الخاص بك
لخدمة الملفات الثابتة التي تم جمعها بواسطة python manage.py collectstatic.
الخلاصة
لقد سرنا خلال الخطوات الأساسية لبناء تطبيق بسيط لتعقب العادات باستخدام
Python Django. بدءًا من إعداد المشروع وتعريف نماذج البيانات، مرورًا
بإنشاء واجهة المستخدم والنماذج وطرق العرض والمسارات، وصولًا إلى حفظ
بيانات العادات وسجل التتبع ونشر التطبيق. يمكنك الآن توسيع هذا التطبيق
بإضافة المزيد من الميزات مثل عرض التقارير والإحصائيات، وتحديد أهداف العادات،
وإرسال تذكيرات. Django يوفر لك إطار عمل قويًا لبناء تطبيقات ويب تفاعلية ومفيدة لتتبع العادات.