
خطوات برمجة نظام إدارة طلاب باستخدام Python Django
بناء نظام إدارة طلاب باستخدام Python Django : دليل شامل
انطلق في رحلة تطوير نظام إدارة طلاب متكامل وقوي باستخدام Python Django!
يمثل هذا الدليل الشامل خريطة طريق مفصلة لإنشاء نظام فعال لإدارة بيانات
الطلاب والدورات الدراسية والتسجيلات باستخدام إطار عمل Django الشهير والمرن.
سواء كنت مطور ويب مبتدئًا أو خبيرًا يسعى لإنشاء حل تعليمي رقمي، ستزودك هذه
الخطوات العملية، المصحوبة بأمثلة أكواد Django واضحة و
بالمهارات والمعرفة اللازمة لتحويل فكرتك إلى نظام عملي وقابل للتوسع. سنستكشف معًا كيفية
تصميم واجهة مستخدم نظام طلاب Django سهلة الاستخدام، وتعريف نماذج Django
للطلاب والدورات لتنظيم البيانات بكفاءة، وتنفيذ عمليات إضافة طلاب Django وعرض معلوماتهم،
وضمان حفظ بيانات الطلاب Django بشكل آمن، وصولًا إلى مراحل نشر تطبيقات Django
التعليمية لتتاح للمستخدمين. استعد لإنشاء نظام إدارة طلاب يلبي احتياجات مؤسستك التعليمية بكفاءة وفعالية.
خطوات بناء نظام إدارة طلاب باستخدام Python Django
في هذا الدليل الشامل سنستعرض خطوات بناء نظام بسيط لإدارة الطلاب
باستخدام لغة البرمجة Python وإطار العمل Django.
سنغطي كل شيء بدءًا من تصميم وإنشاء واجهة المستخدم لعرض الطلاب والدورات،
مرورًا بتعريف نماذج البيانات لتخزين معلومات الطلاب والدورات والتسجيلات
وصولًا إلى حفظ هذه البيانات ونشر التطبيق.
سنبدأ بالخطوة الأولى الحاسمة وهي إعداد بيئة التطوير الخاصة بنا وإنشاء مشروع Django جديد،
الذي سيكون بمثابة الحاوية لتطبيقنا التعليمي.
هيا بنا نبدأ في تجهيز القاعدة الصلبة التي سينطلق منها نظامنا لإدارة الطلاب!
الخطوة 1: إعداد بيئة التطوير وإنشاء مشروع Django :
* تأكد من تثبيت Python و pip على جهازك. ثم قم بتثبيت Django:
pip install django
--
* أنشئ مشروع Django جديدًا باسم student_management_system :
django-admin startproject student_management_system
cd student_management_system
--
* أنشئ تطبيقًا داخل المشروع باسم students :
python manage.py startapp students
--
الخطوة 2: تعريف نماذج البيانات (Models)
في ملف students/models.py، سنقوم بتعريف نماذج البيانات
الأساسية للطلاب والدورات والتسجيلات:
from django.db import models
class Student(models.Model): student_id = models.CharField(max_length=20, unique=True) first_name = models.CharField(max_length=100) last_name = models.CharField(max_length=100) email = models.EmailField(unique=True) phone_number = models.CharField(max_length=20, blank=True, null=True) date_of_birth = models.DateField()
def __str__(self): return f"{self.first_name} {self.last_name} ({self.student_id})"
class Course(models.Model): course_code = models.CharField(max_length=10, unique=True) course_name = models.CharField(max_length=200) description = models.TextField(blank=True, null=True) credits = models.IntegerField(default=3)
def __str__(self): return f"{self.course_code} - {self.course_name}"
class Enrollment(models.Model): student = models.ForeignKey(Student, on_delete=models.CASCADE) course = models.ForeignKey(Course, on_delete=models.CASCADE) enrollment_date = models.DateField(auto_now_add=True) grade = models.CharField(max_length=2, blank=True, null=True)
class Meta: unique_together = ('student', 'course') # منع تسجيل الطالب في نفس الدورة مرتين
def __str__(self): return f"{self.student} enrolled in {self.course}"
* أضف تطبيق students إلى قائمة INSTALLED_APPS في ملف
student_management_system/settings.py :
Python
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'students', # إضافة تطبيق students هنا
]
--
* قم بإنشاء التغييرات وتنفيذها :
python manage.py makemigrations students
python manage.py migrate
--
الخطوة 3: إنشاء واجهة المستخدم (Templates)
* أنشئ مجلدًا باسم templates داخل مجلد تطبيق students. ثم أنشئ ملفات HTML التالية :
students/templates/students/student_list.html :
لعرض قائمة الطلاب :
HTML
<!DOCTYPE html><html><head> <title>قائمة الطلاب</title></head><body> <h1>قائمة الطلاب</h1> <table> <thead> <tr> <th>رقم الطالب</th> <th>الاسم</th> <th>البريد الإلكتروني</th> <th>تاريخ الميلاد</th> <th>الخيارات</th> </tr> </thead> <tbody> {% for student in students %} <tr> <td>{{ student.student_id }}</td> <td>{{ student.first_name }} {{ student.last_name }}</td> <td>{{ student.email }}</td> <td>{{ student.date_of_birth }}</td> <td><a href="{% url 'student_detail' student.id %}">تفاصيل</a></td> </tr> {% empty %} <tr><td colspan="5">لا يوجد طلاب مسجلين.</td></tr> {% endfor %} </tbody> </table> <p><a href="{% url 'add_student' %}">إضافة طالب جديد</a></p></body></html>
* students/templates/students/student_detail.html :
لعرض تفاصيل الطالب والدورات المسجل بها :
HTML
<!DOCTYPE html><html><head> <title>تفاصيل الطالب</title></head><body> <h1>تفاصيل الطالب</h1> <p>رقم الطالب: {{ student.student_id }}</p> <p>الاسم: {{ student.first_name }} {{ student.last_name }}</p> <p>البريد الإلكتروني: {{ student.email }}</p> <p>تاريخ الميلاد: {{ student.date_of_birth }}</p>
<h2>الدورات المسجل بها</h2> {% if enrollments %} <ul> {% for enrollment in enrollments %} <li>{{ enrollment.course.course_name }} ({{ enrollment.course.course_code }}) - تاريخ التسجيل: {{ enrollment.enrollment_date }} {% if enrollment.grade %} - العلامة: {{ enrollment.grade }}{% endif %}</li> {% endfor %} </ul> {% else %} <p>لم يتم تسجيل الطالب في أي دورات حتى الآن.</p> {% endif %} <p><a href="{% url 'student_list' %}">العودة إلى قائمة الطلاب</a></p></body></html>
* students/templates/students/add_student.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 'student_list' %}">العودة إلى قائمة الطلاب</a></p>
</body>
</html>
--
* students/templates/students/course_list.html : لعرض قائمة الدورات :
HTML
<!DOCTYPE html><html><head> <title>قائمة الدورات</title></head><body> <h1>قائمة الدورات</h1> <table> <thead> <tr> <th>رمز الدورة</th> <th>اسم الدورة</th> <th>الوصف</th> <th>الاعتمادات</th> </tr> </thead> <tbody> {% for course in courses %} <tr> <td>{{ course.course_code }}</td> <td>{{ course.course_name }}</td> <td>{{ course.description|default:"-" }}</td> <td>{{ course.credits }}</td> </tr> {% empty %} <tr><td colspan="4">لا توجد دورات متاحة.</td></tr> {% endfor %} </tbody> </table> <p><a href="#">إضافة دورة جديدة</a> (سيتم تنفيذه لاحقًا)</p></body></html>
الخطوة 4: إنشاء النماذج (Forms)
* في ملف students/forms.py (إذا لم يكن موجودًا، قم بإنشائه):
Python
from django import forms
from .models import Student
class StudentForm(forms.ModelForm):
class Meta:
model = Student
fields = ['student_id', 'first_name', 'last_name', 'email', 'phone_number', 'date_of_birth']
widgets = {
'date_of_birth': forms.DateInput(attrs={'type': 'date'})
}
--
الخطوة 5: إنشاء طرق العرض (Views)
في ملف students/views.py، سنقوم بإنشاء طرق العرض التي
تتحكم في منطق التطبيق وتعرض القوالب:
Python
from django.shortcuts import render, redirect, get_object_or_404from .models import Student, Course, Enrollmentfrom .forms import StudentForm
def student_list(request): students = Student.objects.all() context = {'students': students} return render(request, 'students/student_list.html', context)
def student_detail(request, student_id): student = get_object_or_404(Student, id=student_id) enrollments = Enrollment.objects.filter(student=student).select_related('course') context = {'student': student, 'enrollments': enrollments} return render(request, 'students/student_detail.html', context)
def add_student(request): if request.method == 'POST': form = StudentForm(request.POST) if form.is_valid(): form.save() return redirect('student_list') else: form = StudentForm() context = {'form': form} return render(request, 'students/add_student.html', context)
def course_list(request): courses = Course.objects.all() context = {'courses': courses} return render(request, 'students/course_list.html', context)
الخطوة 6: تعريف مسارات URL (URLs)
* في ملف students/urls.py (إذا لم يكن موجودًا، قم بإنشائه) :
Python
from django.urls import path
from . import views
urlpatterns = [
path('students/', views.student_list, name='student_list'),
path('students/<int:student_id>/', views.student_detail, name='student_detail'),
path('students/add/', views.add_student, name='add_student'),
path('courses/', views.course_list, name='course_list'),
]
--
* قم بتضمين مسارات تطبيق students في ملف
student_management_system/urls.py :
Python
from django.contrib import admin
from django.urls import path, include
urlpatterns = [
path('admin/', admin.site.urls),
path('', include('students.urls')), # تضمين مسارات تطبيق students
]
--
الخطوة 7: إضافة بعض البيانات الأولية (اختياري)
يمكنك استخدام Django Admin لإضافة بعض الطلاب والدورات الأولية إلى قاعدة البيانات.
* قم بإنشاء مستخدم مسؤول :
python manage.py createsuperuser
--
* ثم قم بتشغيل خادم التطوير :
python manage.py runserver
--
* قم بزيارة http://127.0.0.1:8000/admin/ وقم بتسجيل الدخول لإضافة الطلاب والدورات.
الخطوة 8: حفظ النقاط (بيانات الطلاب والدورات والتسجيلات)
لقد قمنا بالفعل بحفظ بيانات الطلاب والدورات والتسجيلات في قاعدة البيانات
عند إنشائها وتعديلها من خلال Django Admin أو من خلال النماذج وطرق
العرض التي قمنا بإنشائها (مثل نموذج إضافة طالب في طريقة العرض add_student).
Django ORM يتولى عملية التفاعل مع قاعدة البيانات وحفظ
البيانات بناءً على تعريف النماذج الخاصة بك.
الخطوة 9: نشر التطبيق
لنشر تطبيق Django، يمكنك اتباع نفس الخطوات العامة المذكورة في
قسم النشر في مثال المتجر الإلكتروني البسيط
(باستخدام Gunicorn و Nginx أو أي خادم ويب و WSGI آخر تفضله).
تأكد من تكوين خادم الويب الخاص بك لخدمة الملفات الثابتة التي تم جمعها
بواسطة python manage.py collectstatic.
الخلاصة
لقد قمنا من خلال الخطوات الأساسية لبناء نظام بسيط لإدارة الطلاب باستخدام Python Django.
بدءًا من إعداد المشروع وتعريف نماذج البيانات، مرورًا بإنشاء واجهة المستخدم
والنماذج وطرق العرض والمسارات، وصولًا إلى حفظ بيانات الطلاب والدورات
والتسجيلات ونشر التطبيق. يمكنك الآن توسيع هذا النظام بإضافة المزيد من
الميزات مثل إدارة التسجيل، وإدارة العلامات، وتقارير الطلاب، ولوحة إدارة متقدمة.
Django يوفر لك إطار عمل قويًا لبناء أنظمة إدارة تعليمية متكاملة.