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

الصفحات

طريقة برمجة تطبيق تتبع الوزن واللياقة باستخدام Python Django

How to code a weight and fitness tracking app using Python and Django، دجانغو، Django، Python، تتبع الوزن، تطبيق لياقة، برمجة تطبيق، واجهة مستخدم، نموذج بيانات، عرض بيانات، رسم بياني، إدخال الوزن، إنشاء مشروع، إعداد العناوين، تصميم واجهة، نشر تطبيق، تسجيل دخول، معدل تغير الوزن، تحديد أهداف، إشعارات، تذكير يومي، البريد الإلكتروني، جدولة تلقائية، سجل التمارين، السعرات الحرارية، واجهة API، Fitbit، Google Fit، OAuth2، استيراد بيانات، الوضع الليلي، تصميم متجاوب، Bootstrap، تبديل الوضع، طريقة برمجة تطبيق تتبع الوزن باستخدام Python Django، تطبيق تتبع الوزن واللياقة باستخدام Python Django، برمجة تطبيق تتبع الوزن واللياقة، تطبيق تتبع الوزن باستخدام Django، تطبيق تتبع اللياقة باستخدام Django، إنشاء تطبيق تتبع الوزن Python Django، خطوات برمجة تطبيق تتبع الوزن Django، تصميم واجهة مستخدم تطبيق تتبع الوزن Django، إنشاء نموذج بيانات لتطبيق تتبع الوزن Django، عرض بيانات الوزن باستخدام Django، إضافة رسم بياني لتتبع الوزن Django Chart.js، نشر تطبيق Django لتتبع الوزن، تسجيل دخول المستخدمين في تطبيق Django، حساب معدل التغير في الوزن باستخدام Python، إضافة رسالة تشجيعية لتطبيق اللياقة Django، تحديد أهداف شخصية في تطبيق تتبع الوزن Django، إرسال إشعارات يومية عبر البريد الإلكتروني Django، تذكير يومي بتحديث الوزن باستخدام Python Django، جدولة تلقائية للمهام في Django، إضافة سجل للتمارين اليومية في تطبيق Django، تتبع السعرات الحرارية في تطبيق اللياقة Django، ربط تطبيق Django بواجهة API مثل Fitbit، ربط تطبيق Django بواجهة API مثل Google Fit، إعداد OAuth2 لتطبيق تتبع اللياقة Django، استيراد البيانات من Fitbit إلى Django، تفعيل الوضع الليلي في تطبيق Django، تصميم متجاوب للجوال لتطبيق Django، استخدام Bootstrap في تصميم تطبيق Django، إضافة زر لتبديل الوضع الليلي في HTML، برمجة تطبيق لياقة باستخدام Python، تطوير تطبيق تتبع الوزن باستخدام Django، إنشاء تطبيق لتتبع النشاط البدني باستخدام Python، تطبيقات تتبع الصحة باستخدام Django، مشاريع Python Django للمبتدئين، أفكار مشاريع عملية في Python، كيفية برمجة تطبيق تطبيق تتبع الوزن أو اللياقة، Python Django، خطوات بناء تطبيق Django، برمجة تطبيق صحي، إدخال الوزن اليومي بايثون، تتبع اللياقة مع Django، تتبع الوزن Django، مشروع لياقة بايثون، تطبيق صحة باستخدام Python، بناء تطبيق تتبع اللياقة، أفكار مشاريع Django، تتبع الوزن بايثون، برمجة تطبيق لياقة، Python Django تطبيقات صحية، تطبيق تتبع الوزن Django، تطبيق لياقة بدنية بايثون، تتبع السعرات Django، Python health tracker، Fitness app Django، Weight tracker with Django، مشروع بايثون Django تتبع لياقة، Dashboard تتبع الوزن Python، كيفية إنشاء تطبيق تتبع الوزن أو اللياقة باستخدام Django، دجانغو، طريقة برمجة تطبيق تتبع الوزن واللياقة باستخدام Python Django، تطبيق لياقة بدنية بايثون، تتبع السعرات Django، Python health tracker، Fitness app Django،




طريقة برمجة تطبيق تتبع الوزن واللياقة باستخدام Python Django


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


خطوات برمجة تطبيق تتبع الوزن واللياقة باستخدام Python Django



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

 الخطوة 1: إنشاء المشروع
django-admin startproject fitness_tracker
cd fitness_tracker
python manage.py startapp tracker

* ثم نضيف tracker إلى INSTALLED_APPS في settings.py.

 الخطوة 2: إنشاء نموذج البيانات (Model)

# tracker/models.py
from django.db import models
from django.utils import timezone
class WeightEntry(models.Model):
    date = models.DateField(default=timezone.now)
    weight = models.FloatField()
    def __str__(self):
        return f"{self.date} - {self.weight} kg"
--

* ثم :
python manage.py makemigrations
python manage.py migrate
--

 الخطوة 3: إنشاء نموذج إدخال الوزن (Form)
python

# tracker/forms.py
from django import forms
from .models import WeightEntry

class WeightEntryForm(forms.ModelForm):
    class Meta:
        model = WeightEntry
        fields = ['date', 'weight']
--

 الخطوة 4: إنشاء الواجهات (Views)
python

# tracker/views.py
from django.shortcuts import render, redirect
from .forms import WeightEntryForm
from .models import WeightEntry
def index(request):
    entries = WeightEntry.objects.order_by('-date')
    form = WeightEntryForm(request.POST or None)
    if request.method == "POST" and form.is_valid():
        form.save()
        return redirect('index')
    return render(request, 'tracker/index.html', {'form': form, 'entries': entries})
--



الخطوة 5: إعداد العناوين (URLs)
python

# tracker/urls.py
from django.urls import path
from . import views
urlpatterns = [
    path('', views.index, name='index'),
]
--

* ولا تنسَ ربطها في fitness_tracker/urls.py :
python

path('', include('tracker.urls')),
--

الخطوة 6: تصميم الواجهة (HTML Template)
html

<!-- tracker/templates/tracker/index.html -->

<!DOCTYPE html>
<html>
<head>
    <title>تتبع الوزن</title>
</head>
<body>
    <h1>📉 تتبع الوزن</h1>
    <form method="post">
        {% csrf_token %}
        {{ form.as_p }}
        <button type="submit">إضافة</button>
    </form>

    <h2>السجل:</h2>
    <ul>
    {% for entry in entries %}
        <li>{{ entry.date }} - {{ entry.weight }} كجم</li>
    {% endfor %}
    </ul>
</body>
</html>
--

الخطوة 7: إضافة رسم بياني باستخدام Chart.js
أضف إلى نفس الصفحة:
html

<canvas id="weightChart"></canvas>
<script src="https://cdn.jsdelivr.net/npm/chart.js"></script>
<script>
    const labels = [{% for entry in entries reversed %}"{{ entry.date }}",{% endfor %}];
    const data = [{% for entry in entries reversed %}{{ entry.weight }},{% endfor %}];

    new Chart(document.getElementById("weightChart"), {
        type: 'line',
        data: {
            labels: labels,
            datasets: [{
                label: 'الوزن',
                data: data,
                borderColor: 'green',
                fill: false
            }]
        }
    });
</script>
--

الخطوة 8: نشر التطبيق
أنشئ حساب على PythonAnywhere أو Render،
ارفع المشروع هناك، فعل إعدادات قواعد البيانات و static files، 
اضبط إعدادات ALLOWED_HOSTS و DEBUG=False.


ميزات اضافية لبرمجة تطبيق تتبع الوزن أو اللياقة باستخدام python 


1. تسجيل دخول المستخدمين (Authentication)
لكي يكون لكل مستخدم سجله الخاص:
python manage.py startapp accounts
--
استخدم django.contrib.auth لإنشاء نظام تسجيل وتسجيل دخول بسيط.

 2. حساب معدل التغير في الوزن + رسالة تشجيعية
* تعديل View:



 python

from django.db.models import F
from .models import WeightEntry

def index(request):
    entries = WeightEntry.objects.order_by('-date')
    message = ""

    if len(entries) >= 2:
        last = entries[0]
        previous = entries[1]
        diff = last.weight - previous.weight

        if diff < 0:
            message = f"أحسنت! لقد خسرت {abs(diff):.1f} كجم منذ آخر مرة 👏"
        elif diff > 0:
            message = f"لقد اكتسبت {diff:.1f} كجم، لا بأس، استمر بالمحاولة!"
        else:
            message = "وزنك ثابت، حافظ على روتينك 💪"

    form = WeightEntryForm(request.POST or None)
    if request.method == "POST" and form.is_valid():
        form.save()
        return redirect('index')

    return render(request, 'tracker/index.html', {'form': form, 'entries': entries, 'message': message})

--

* تعديل القالب (HTML):
html
{% if message %}
  <p style="color: green;">{{ message }}</p>
{% endif %}
--

3. تحديد أهداف شخصية
* إنشاء نموذج هدف :
python

# models.py
class Goal(models.Model):
    target_weight = models.FloatField()
    deadline = models.DateField()
--

* نموذج إدخال الهدف :
python

# forms.py
class GoalForm(forms.ModelForm):
    class Meta:
        model = Goal
        fields = ['target_weight', 'deadline']
--

* عرض التقدم في view :



python

from .models import Goal
from datetime import date

def index(request):
    # الكود السابق...
    goal = Goal.objects.last()
    progress = None

    if goal and entries:
        current = entries[0].weight
        total = current - goal.target_weight
        days_left = (goal.deadline - date.today()).days
        progress = f"الوزن المتبقي: {abs(total):.1f} كجم، الوقت المتبقي: {days_left} يومًا"

    return render(request, 'tracker/index.html', {
        'form': form,
        'entries': entries,
        'message': message,
        'goal': goal,
        'progress': progress,
    })


--

* عرض الهدف في HTML :
html

{% if progress %}
  <p style="color: blue;">🎯 {{ progress }}</p>
{% endif %}
--

 4. إشعارات أو تذكير يومي عبر البريد الإلكتروني
* إعداد البريد :
في settings.py:
python

EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_HOST = 'smtp.yourprovider.com'
EMAIL_PORT = 587
EMAIL_USE_TLS = True
EMAIL_HOST_USER = 'you@example.com'
EMAIL_HOST_PASSWORD = 'yourpassword'
--

* ملف مهمة مخصصة :
python

# tracker/tasks.py

from django.core.mail import send_mail
from django.contrib.auth.models import User

def send_daily_reminders():
    users = User.objects.all()
    for user in users:
        send_mail(
            'تذكير بتحديث وزنك',
            'لا تنسَ تسجيل وزنك اليوم في تطبيق تتبع الوزن!',
            'noreply@yourapp.com',
            [user.email],
            fail_silently=False,
        )
       --

* ربطها بجدولة تلقائية (مثل CRON أو Celery + periodic tasks)
* ربط التذكير اليومي بالبريد الإلكتروني باستخدام Celery و django-celery-beat.
 1. ربط التذكير اليومي بالبريد الإلكتروني باستخدام Celery و django-celery-beat
* تثبيت الحزم المطلوبة:
pip install celery django-celery-beat redis
--
* إعداد Celery في مشروع Django :
* project/celery.py
python

import os
from celery import Celery
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'project.settings')
app = Celery('project')
app.config_from_object('django.conf:settings', namespace='CELERY')
app.autodiscover_tasks()
--

* project/__init__.py
python

from .celery import app as celery_app
__all__ = ['celery_app']
--

* إعدادات Celery في settings.py :
python

CELERY_BROKER_URL = 'redis://localhost:6379/0'
CELERY_BEAT_SCHEDULER = 'django_celery_beat.schedulers:DatabaseScheduler'
--

* إنشاء مهمة التذكير :
* tracker/tasks.py
python

from celery import shared_task
from django.core.mail import send_mail
from django.contrib.auth.models import User

@shared_task
def send_daily_reminders():
    users = User.objects.all()
    for user in users:
        send_mail(
            'تذكير بتحديث وزنك',
            'لا تنسَ تسجيل وزنك اليوم في تطبيق تتبع الوزن!',
            'noreply@yourapp.com',
            [user.email],
            fail_silently=False,
        )
--

* جدولة المهمة باستخدام django-celery-beat:
أضف 'django_celery_beat' إلى INSTALLED_APPS في settings.py.
* شغّل الترحيلات:
python manage.py migrate
--

* في لوحة تحكم Django Admin:
انتقل إلى Periodic Tasks.
أنشئ مهمة جديدة:
الاسم: إرسال التذكير اليومي
المهمة: tracker.tasks.send_daily_reminders
الجدول: اختر Interval وحدد كل 24 ساعة أو حسب الرغبة.




 2. إضافة سجل للتمارين اليومية والسعرات الحرارية
* نموذج البيانات :
* tracker/models.py
python

from django.db import models
from django.utils import timezone

class WeightEntry(models.Model):
    date = models.DateField(default=timezone.now)
    weight = models.FloatField()

    def __str__(self):
        return f"{self.date} - {self.weight} kg"
--

* نموذج الإدخال:
* tracker/forms.py
python

from django import forms
from .models import Exercise

class ExerciseForm(forms.ModelForm):
    class Meta:
        model = Exercise
        fields = ['name', 'duration', 'calories_burned']
--

* العرض في الواجهة:
* tracker/views.py



python

from django.shortcuts import render, redirect
from .forms import ExerciseForm
from .models import Exercise

def exercise_log(request):
    if request.method == 'POST':
        form = ExerciseForm(request.POST)
        if form.is_valid():
            exercise = form.save(commit=False)
            exercise.user = request.user
            exercise.save()
            return redirect('exercise_log')
    else:
        form = ExerciseForm()
    exercises = Exercise.objects.filter(user=request.user).order_by('-date')
    return render(request, 'tracker/exercise_log.html', {'form': form, 'exercises': exercises})


--

* القالب (HTML) :
tracker/templates/tracker/exercise_log.html
html

<h2>سجل التمارين اليومية</h2>
<form method="post">
    {% csrf_token %}
    {{ form.as_p }}
    <button type="submit">إضافة تمرين</button>
</form>

<h3>التمارين السابقة</h3>
<ul>
    {% for exercise in exercises %}
        <li>{{ exercise.date }}: {{ exercise.name }} - {{ exercise.duration }} دقيقة - {{ exercise.calories_burned }} سعر حراري</li>
    {% endfor %}
</ul>
--

3. ربط التطبيق بواجهة API مثل Fitbit أو Google Fit
* إعداد OAuth2:
استخدم مكتبة مثل requests-oauthlib للتعامل مع OAuth2.
سجل تطبيقك في منصة Fitbit أو Google للحصول على client_id و client_secret.

* مثال على استيراد البيانات:
* tracker/views.py
python

import requests
from django.shortcuts import redirect

def fetch_fitbit_data(request):
    access_token = request.user.profile.fitbit_access_token
    headers = {'Authorization': f'Bearer {access_token}'}
    response = requests.get('https://api.fitbit.com/1/user/-/activities/date/today.json', headers=headers)
    data = response.json()
    # معالجة البيانات وتخزينها في قاعدة البيانات
    return redirect('dashboard')
--

* ملاحظة: تأكد من تخزين access_token و refresh_token بأمان وتحديثها عند الحاجة.

 4. تفعيل الوضع الليلي وتصميم متجاوب للجوال
* استخدام Bootstrap:
أضف Bootstrap إلى القوالب الخاصة بك لتحسين التصميم وجعله متجاوبًا.
* base.html
html

<!DOCTYPE html>
<html lang="ar">
<head>
    <!-- ... -->
    <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css">
    <!-- ... -->
</head>
<body class="bg-light text-dark">
    <!-- محتوى الصفحة -->
</body>
</html>
--

* تفعيل الوضع الليلي:
أضف زرًا لتبديل الوضع الليلي :
* base.html
html

<button id="toggle-theme">تبديل الوضع</button>
<script>
    document.getElementById('toggle-theme').addEventListener('click', function() {
        document.body.classList.toggle('bg-dark');
        document.body.classList.toggle('text-light');
    });
</script>
--

*خاتمة :
بذلك نكون قد أنشأنا تطبيقًا متكاملًا لتتبع الوزن باستخدام دجانغو Django.
 تعلمت كيف تُنشئ قاعدة بيانات، تصمم الواجهات، وتتفاعل مع المستخدم 
من خلال الرسوم البيانية. هذا المشروع يمكنك تطويره بإضافة ميزات
 مثل حساب السعرات، تحليل الوزن، أو دعم تسجيل دخول المستخدمين.
 إذا كنت تبحث عن فكرة مشروع عملي في بايثون، فهذا التطبيق مثال ممتاز
 يجمع بين الصحة والبرمجة في تجربة واحدة مفيدة.
هذا المشروع هو بداية رائعة لأي مطور يرغب في إنشاء تطبيق تتبع صحي أو رياضي
 باستخدام دجانغو Django. يمكنك تطويره أكثر بإضافة المستخدمين، وإحصائيات متقدمة، وتذكيرات يومية!





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