⚡ IS231 · Lecture 05 · Dr. Mohamed Nour Eldien · أسئلة امتحانات 2021 – 2025

Django —
Part I: Getting Started

مقدمة شاملة في Django Framework — ليه بنستخدم Framework، معمارية MVT، إعداد البيئة خطوة خطوة، هيكل المشروع، الـ Views والـ URLs والـ Templates والـ Migrations — الشرح بالعربي والمصطلحات بالإنجليزي 🇪🇬🐍

12
قسم شرح
18+
سؤال امتحان حقيقي
2021–2025
سنوات الامتحانات
نجاح 🎯
01

Why Do We Need a Framework? — ليه بنحتاج Framework؟

الفرق بين الكتابة من الصفر واستخدام إطار عمل جاهز

💡 المشكلة اللي بيحلها الـ Framework

الطالب دلوقتي عارف Python — بس محتاج طريقة أسرع عشان يبني Web Applications كاملة. من غير Framework، كل مشروع هتكتب فيه كل حاجة من الصفر: الـ Routing، الـ Forms، الـ Database Logic، الـ Templates، الـ Admin... ده بيضيع وقت ضخم جداً ومليان أخطاء.

❌ بدون Framework

  • تكتب الـ Routing يدوياً من الصفر
  • تبني الـ Database Layer وحدك
  • تعمل الـ Admin Interface يدوياً
  • تتعامل مع الـ Security وحدك
  • بطيء جداً وعرضة للأخطاء

✅ مع Django Framework

  • الـ Routing جاهز وسهل التكوين
  • ORM بيتعامل مع الـ Database بكود Python
  • Admin Panel جاهز تلقائياً
  • Security Features مدمجة
  • سريع، آمن، ومنظم
💡 تشبيه بسيط: بناء موقع بدون Framework زي بناء عمارة بدون عمال ومعمار — ممكن تعملها بس هتاخد سنين وهتيجي غلط. الـ Framework زي المعمار اللي جاهز ليك الأساس والهيكل، إنت بس تضيف المحتوى.
🎯 مميزات استخدام Framework

📐 Structure

بيخلي الـ Team يشتغل على أسلوب واحد منظم — كل حاجة في مكانها الصح.

⚡ Speed

بتبني Features أسرع بكتير عشان الأساسيات موجودة جاهزة.

🔒 Security

الـ Framework بيحميك من أشهر الثغرات زي SQL Injection و CSRF تلقائياً.

02

What is Django? — ما هو Django؟

تعريف شامل للـ Framework واللي بيميزه

🐍 تعريف Django

الـ Django هو Web Framework مبني بـ Python ومصمم للـ Rapid Development (التطوير السريع). هو مش لغة برمجة — Python هي اللغة، وDjango هو إطار العمل المبني فوقيها.

📌 من الامتحان مباشرة (2021 & 2024): Django is a type of Web Framework. مش Programming Language ومش Software ومش Database. والـ Architecture بتاعته هي MVT (Model–View–Template).

🔋 "Batteries Included" — Django بيجي بكل حاجة:

  • نظام الـ Routing جاهز
  • Admin Interface مدمج
  • ORM للتعامل مع الـ Database
  • نظام الـ Authentication
  • معالجة الـ Forms
  • حماية من الثغرات الشائعة

🎯 ليه Django للتعليم؟

  • Readable و Practical زي Python
  • قريبة من طريقة عمل الـ Industry الحقيقي
  • Python + Web + Templates + URLs + Models في بيئة واحدة
  • Community ضخم جداً ودعم ممتاز
⚡ فرق مهم جداً: Python هي لغة البرمجة — Django هو Framework (إطار عمل) مكتوب بـ Python. الفرق زي الفرق بين اللغة الإنجليزية (Python) وكتاب مكتوب بيها (Django).
03

MVT Architecture — معمارية نموذج-عرض-قالب

قلب Django — Model · View · Template

📐 MVT — الثلاثة أجزاء الأساسية
📦
Model
models.py
بيتعامل مع البيانات وجداول الـ Database. بيعرّف هيكل البيانات. الـ ORM بيترجم Python Classes لجداول SQL.
⚙️
View
views.py
بيستقبل الـ Requests، بيشغل الـ Logic، بيجيب البيانات من الـ Model، وبيرد بـ HTTP Response غالباً باستخدام Template.
🎨
Template
*.html
ملفات HTML بتتحكم في اللي المستخدم بيشوفه. بتستخدم Django Template Language: {{ var }}، {% for %}، {% if %}.
⚡ MVT vs MVC — فرق مهم للامتحان: Django بيستخدم MVT مش MVC. الـ View في Django بيعمل دور الـ Controller في MVC. الـ Template في Django بيعمل دور الـ View في MVC. الأسماء مختلفة بس الدور قريب جداً.
📋 مقارنة MVT مع MVC
الدورفي MVCفي Django MVT
إدارة البياناتModelModel
المنطق والـ LogicControllerView (اسمه مختلف!)
العرض للمستخدمViewTemplate (اسمه مختلف!)
🚨 نقطة امتحان مكررة (2021 & 2024): Django's architecture consists of: Model, View, and Template (MVT). مش Model and View only، ومش Template and View only. الثلاثة مع بعض.
04

Django Request–Response Flow — رحلة الـ Request في Django

من المتصفح للـ Response — خطوة بخطوة

🔄 رحلة الـ Request كاملة
🌐
Browser
HTTP Request
🗺️
urls.py
URL Routing
⚙️
views.py
Logic
📦
models.py
Database
🎨
Template
HTML
📤
Response
للمستخدم
1
Browser يبعت Request
المستخدم يكتب URL أو يضغط زرار — المتصفح يبعت HTTP Request للسيرفر.
2
urls.py يعمل Routing
Django بيشوف الـ URL Path ويدور عليه في urlpatterns — بيحدد أي View هيتشغل.
3
views.py يشغّل الـ Logic
الـ View Function بتستقبل الـ Request، بتشتغل على المنطق، وممكن تتعامل مع الـ Model.
4
models.py يجيب البيانات (لو محتاج)
لو الـ View محتاج بيانات، بيتعامل مع الـ Model اللي بيكلم الـ Database.
5
Template يتولد كـ HTML
الـ View بيبعت البيانات للـ Template اللي بيولّد HTML ديناميكي.
6
HTTP Response يترجع للمتصفح
الصفحة الكاملة بترجع للمستخدم وتتعرض.
05

Setup Workflow — خطوات إعداد بيئة Django

من الصفر لسيرفر شغّال — 10 خطوات

📋 الـ 10 خطوات الكاملة — Full Setup Steps
القاعدة الذهبية: VS Code = اكتب الكود | Terminal = شغّل الأوامر | Browser = شوف النتيجة
1
افتح الفولدر في VS Code
File → Open Folder → your_project_folder — افتح الفولدر كله مش ملف واحد، عشان VS Code يدير المشروع كـ Workspace كامل ويفتح الـ Terminal في المكان الصح.
2
افتح الـ Terminal
Terminal → New Terminal أو Ctrl + ` — الـ Terminal هو المكان اللي هتكتب فيه كل أوامر Django.
3
تأكد إن Python مثبت
python --version — لو ظهر رقم إصدار كل حاجة تمام. لو ظهر "not recognized" يبقى Python مش مثبت أو مش في الـ PATH.
4
أنشئ الـ Virtual Environment
python -m venv venv — بيعمل بيئة Python معزولة للمشروع ده بس. بعد التنفيذ هيتعمل فولدر اسمه venv/ في مشروعك.
5
شغّل (Activate) الـ Virtual Environment
Windows: venv\Scripts\activate
macOS/Linux: source venv/bin/activate
لازم تشوف (venv) في أول سطر الـ Terminal — ده دليل إن البيئة شغّالة.
6
ثبّت Django
pip install django — بيحمّل Django في الـ Virtual Environment بس مش في النظام كله. تأكد إن الـ venv شغّال الأول!
7
أنشئ مشروع Django
django-admin startproject myproject — بيولّد هيكل المشروع تلقائياً مع كل الملفات الأساسية.
8
ادخل فولدر المشروع
cd myproject — ضروري! لازم تكون في نفس الفولدر اللي فيه ملف manage.py عشان أوامر Django تشتغل.
9
شغّل سيرفر التطوير
python manage.py runserver — بيبدأ الـ Local Development Server. هيظهر في الـ Terminal عنوان السيرفر. وقفه بـ Ctrl + C
10
افتح في المتصفح
http://127.0.0.1:8000/ — الـ IP 127.0.0.1 يعني جهازك (localhost). البورت 8000 هو البورت الافتراضي لـ Django.
🚨 أشهر مشاكل الإعداد وحلولها
المشكلةالسبب المحتملالحل
"python is not recognized"Python مش مثبت أو مش في الـ PATHأعد التثبيت وفعّل "Add Python to PATH"
Django مش موجود بعد pip installالـ Virtual Environment مش شغّالتأكد من وجود (venv) في الـ Terminal
Port 8000 مشغولتطبيق تاني شغّال على نفس البورتاستخدم python manage.py runserver 8001
"manage.py not found"إنت في الفولدر الغلطتأكد إنك داخل فولدر المشروع الصح
06

Virtual Environment — البيئة الافتراضية

عزل مشروعك عن باقي المشاريع على نفس الجهاز

🧪 ما هو الـ Virtual Environment؟

الـ Virtual Environment هو بيئة Python معزولة خاصة بكل مشروع. فكّر فيه زي "طاولة مختبر خاصة" — كل الأدوات (الـ Packages) اللي على الطاولة دي بتاعة المشروع ده بس.

❌ بدون Virtual Environment

  • كل الـ Packages بتتثبت globally في النظام
  • مشروعين محتاجين نفس الـ Package بإصدارات مختلفة = مشكلة
  • صعب تنقل المشروع لجهاز تاني

✅ مع Virtual Environment

  • كل مشروع عنده Packages منفصلة
  • مفيش تعارض بين المشاريع
  • سهل تنقل المشروع بـ requirements.txt
TERMINAL — Virtual Environment Commands
# إنشاء الـ Virtual Environment
python -m venv venv

# تشغيله على Windows
venv\Scripts\activate

# تشغيله على macOS/Linux
source venv/bin/activate

# لو شغّال هتشوف في الـ Terminal:
(venv) C:\Users\...>

# إيقافه
deactivate
🚨 قاعدة ثابتة: دايماً شغّل الـ Virtual Environment الأول قبل ما تعمل pip install django. لو نسيت، الـ Django هيتثبت في النظام كله مش في المشروع.
07

Project Structure — هيكل مشروع Django

كل ملف بيعمل إيه؟

🗂️ الملفات اللي Django بيولّدها
myproject/ ← الفولدر الخارجي ├── manage.py ← نقطة دخول الأوامر الرئيسية └── myproject/ ← الـ Inner Package (نفس الاسم!) ├── __init__.py ← بيعرّف الفولدر ده كـ Python Package ├── settings.py ← كل إعدادات المشروع (DB, Apps, Templates...) ├── urls.py ← الـ Root URL Configuration ├── asgi.py ← Async Server Interface (للـ async servers) └── wsgi.py ← Web Server Interface (للـ traditional servers)
⚠️ نقطة تشويش شائعة: فيه فولدرين باسم myproject! الأول هو الفولدر الخارجي (Outer). الثاني هو الـ Python Package الداخلي (Inner) اللي فيه الإعدادات.
manage.py

نقطة دخول أوامر Django — الأمر ده بتشتغل منه:

  • python manage.py runserver — تشغيل السيرفر
  • python manage.py startapp — إنشاء App
  • python manage.py makemigrations — إنشاء Migrations
  • python manage.py migrate — تطبيق Migrations
  • python manage.py createsuperuser — إنشاء Admin User
📌 قاعدة: دايماً شغّل الأوامر دي من الفولدر اللي فيه manage.py.
⚙️ settings.py

لوحة التحكم الرئيسية للمشروع — فيه:

  • INSTALLED_APPS — قائمة الـ Apps المثبتة
  • DATABASES — إعدادات الـ Database
  • TEMPLATES — إعدادات الـ Templates
  • STATIC_URL — مسار الملفات الثابتة
  • DEBUG — وضع التطوير (True/False)
🗺️ urls.py

خريطة الطرق (Road Map) — بيربط URL Paths بالـ Views. لما المتصفح يطلب /students/، Django بيبص في urls.py عشان يعرف أي View يشتغل.

🔌 wsgi.py & asgi.py

ملفات الـ Deployment — بتساعد الـ Web Servers يتكلم مع Django.

  • WSGI (Web Server Gateway Interface) — للـ Traditional Servers
  • ASGI (Async Server Gateway Interface) — للـ Async Servers
08

Django Project vs Django App — الفرق بين المشروع والتطبيق

أحد أهم المفاهيم للمبتدئين في Django

🏗️ Django Project

الـ Project هو الحاوية الكبيرة (Container) للموقع كله. بيتنشأ بالأمر: django-admin startproject myproject

  • الـ Overall Configuration بتاعة الموقع
  • الـ Global URLs
  • الـ Database Settings
  • بيحتوي على كذا App جوّاه
زي الجامعة كلها — فيها كليات كتير.
📦 Django App

الـ App هو Module متكامل بيركّز على Feature معينة. بيتنشأ بالأمر: python manage.py startapp students

  • بيحتوي على Models, Views, Templates, URLs خاصة بيه
  • مثال: students، courses، blog
  • Python Package مكتمل
  • ممكن يتستخدم في مشاريع تانية
زي كلية واحدة جوّا الجامعة — بيعمل شغل معين.
📂 ملفات الـ App بعد startapp
students/ ← الـ App Folder ├── __init__.py ← Python Package marker ├── admin.py ← تسجيل Models في الـ Admin Panel ├── apps.py ← إعدادات الـ App ├── models.py ← تعريف جداول البيانات (Model) ├── views.py ← الـ Logic بتاع الـ App (View) ├── urls.py ← الـ URL Patterns (بتعملها إنت) ├── tests.py ← الـ Unit Tests └── migrations/ ← ملفات الـ Migrations (بتتولد تلقائياً) └── __init__.py
🚨 قاعدة مهمة: بعد ما تنشئ الـ App، لازم تضيف اسمها في INSTALLED_APPS في settings.py عشان Django يعرف بيها!
⚙️ تسجيل الـ App في settings.py
settings.py — INSTALLED_APPS
INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'students',  # ← ضيف اسم الـ App هنا
]
📌 من امتحان 2021: "What is a Django App?" → الإجابة في الامتحان كانت Both A and B.
تنويه: علمياً، الـ Django App هي "Python package with its own components"، وصيغة "extended package..." غير دقيقة، لكن للامتحان نختار Both.
09

Views & URL Configuration — الـ Views والـ Routing

ربط الـ URLs بالـ Python Logic

⚙️ ما هو الـ View؟

الـ View في Django هو Python Function (أو Class) بيستقبل HTTP Request ويرجع HTTP Response. هو اللي بيشتغل على الـ Logic ويقرر إيه اللي هيترجع للمستخدم.

views.py — أبسط View ممكن
from django.http import HttpResponse

def home(request):         # كل View لازم تاخد request
    return HttpResponse("Hello, Django!")

def about(request):
    return HttpResponse("About page")
📌 ملاحظة: الـ HttpResponse بيرجع نص بسيط — مناسب للـ Testing. في الواقع بنستخدم render() عشان نرجع Template HTML كاملة.
🗺️ URL Configuration — urls.py

الـ urls.py بيحدد "لما المستخدم يطلب URL معين، أي View تشتغل؟" — بيستخدم الدالة path() عشان يربط URL بـ View.

urls.py — App Level URL Patterns
from django.urls import path
from . import views

urlpatterns = [
    path('', views.home, name='home'),           # /
    path('students/', views.student_list, name='students'),  # /students/
    path('about/', views.about, name='about'),    # /about/
]
🔗 ربط الـ App URLs بالـ Project URLs

المشروع الكبير (Project) بيستخدم include() عشان يحوّل الـ Requests للـ App المناسبة — بيخلي كل App تدير URLs بتاعتها.

myproject/urls.py — Root URL Configuration
from django.contrib import admin
from django.urls import path, include

urlpatterns = [
    path('admin/', admin.site.urls),
    path('students/', include('students.urls')),  # ← يحوّل لـ App
]
🎨 View مع render() — الأكثر استخداماً
views.py — View مع Template
from django.shortcuts import render

def student_list(request):
    students = ["Ali", "Mona", "Sara"]  # أو من الـ Database
    return render(request, 'students/list.html', {
        'students': students,   # Context Dictionary
        'title': 'Student List',
    })
📌 شرح render(): الـ render(request, template_name, context) بتاخد ثلاثة حاجات: الـ Request، اسم الـ Template، والـ Context Dictionary اللي فيه البيانات اللي هترجع للـ Template.
10

Django Templates — قوالب Django

Dynamic HTML باستخدام Django Template Language (DTL)

📝 Template Variables & Tags

{{ }} — Variables

بيعرض قيمة متغير Python — Django بيبدّل {{ name }} بقيمة الـ Variable من الـ context dictionary.

{% %} — Template Tags

للـ Logic والـ Control Flow — زي for، if، block، load. مش بتعرض قيمة، بتعمل منطق.

Django Template Language — DTL
<!-- {{ }} للمتغيرات — بيتبدّل بقيمة Python -->
<h1>Hello, {{ name }}!</h1>

<!-- {% %} للـ Logic والـ Control -->
{% for student in students %}
  <p>{{ student.name }}</p>
{% endfor %}

{% if user.is_authenticated %}
  <p>Welcome back!</p>
{% else %}
  <p>Please login.</p>
{% endif %}

<!-- {# #} للـ Comments (مش بتظهر في HTML) -->
{# ده comment مش بيظهر للمستخدم #}
🚨 نقطة امتحان مكررة (2021 & 2024): {{ name }} = Variable (بيتبدّل بقيمة Python). {% tag %} = Logic Tag (for, if, block). {# comment #} = Comment.
🔄 forloop Attributes — خصائص الـ For Loop في Templates
الخاصيةالوصفمثال
forloop.counterرقم التكرار الحالي (يبدأ من 1)1، 2، 3...
forloop.counter0رقم التكرار الحالي (يبدأ من 0)0، 1، 2...
forloop.revcounterعدد التكرارات المتبقية (من 1)3، 2، 1...
forloop.firstTrue لو دي أول دورةTrue / False
forloop.lastTrue لو دي آخر دورةTrue / False
🚨 من امتحان 2021 — فخ خبيث: الـ Valid attribute هو forloop.counter بدون أقواس. لو الامتحان عرضلك forloop.counter() بأقواس → ده غلط! الـ forloop attributes مش methods، مش ليها أقواس. وكمان forloop.reverse وforloop.previous وforloop.lastitem = مش موجودين.
Django Template — forloop في الواقع
{% for student in students %}
  <tr>
    <td>{{ forloop.counter }}</td>    {# الرقم من 1 #}
    <td>{{ student.name }}</td>
    {% if forloop.first %}
      <td>First Student!</td>
    {% endif %}
  </tr>
{% empty %}
  <tr><td>No students found.</td></tr>
{% endfor %}
🔗 Template Syntax للـ For Loop — من الامتحان
EXAM QUESTION — Correct for Loop Syntax
# ✅ الصح — Template Tag في Django
{% for x in y %}
  {{ x }}
{% endfor %}

# ❌ غلط — أقواس Python عادية
(for x in y)

# ❌ غلط — صيغة PHP أو ERB
<% for x in y %>
📌 من امتحان 2024: الـ Template Tag الصح للـ for loop هو {% for x in y %} — مش (for x in y) ومش <% for x in y %>.
11

Migrations — ترحيل التغييرات للـ Database

إزاي Django بيطبّق تغييرات الـ Model على الـ Database

🗄️ ما هي الـ Migrations؟

الـ Migrations هي الطريقة اللي Django بيترجم بيها التغييرات اللي عملتها في الـ Models (Python Classes) لتغييرات حقيقية في الـ Database Tables. بدل ما تكتب SQL يدوياً، Django بيكتبه عنك.

💡 تشبيه: الـ Model زي الرسمة الهندسية (Blueprint) والـ Migration زي التصريح الرسمي بالبناء. لما تعدّل الرسمة (Model)، لازم تعمل تصريح جديد (makemigrations) وتطبّقه (migrate).
📋 makemigrations — إنشاء ملف الترحيل
TERMINAL
python manage.py makemigrations
  • بيفحص التغييرات في الـ Models
  • بيولّد ملف Migration في migrations/
  • مش بيعدّل الـ Database فعلياً — بس بيجهّز الخطة
migrate — تطبيق التغييرات
TERMINAL
python manage.py migrate
  • بيقرأ ملفات الـ Migrations
  • بيطبّقها على الـ Database الفعلي
  • بيعمل الجداول الجديدة أو يعدّل الموجودة
🚨 نقطة امتحان (2021 & 2024): "What are Migrations in Django?" → الإجابة: All of the above / D — لأنها بتعمل الثلاثة: تتبّع تغييرات الـ Schema، بتتنشأ بـ makemigrations، وبتتطبّق بـ migrate. كمان من 2024: لما بتعدّل Model، الأمر اللي بيطبّق التغييرات على الـ Database هو python manage.py makemigrations ثم python manage.py migrate.
12

Django Admin — لوحة الإدارة المدمجة

واجهة جاهزة لإدارة البيانات من غير ما تكتب كود

🖥️ ما هو Django Admin؟

الـ Django Admin هو Interface جاهز ومدمج في Django بيخليك تتعامل مع البيانات في الـ Database بدون ما تكتب أي كود HTML أو Python إضافي. عبره تقدر تضيف وتعدّل وتحذف Records مباشرة.

🔑 ليه بيحبّوه؟

  • جاهز من أول يوم بدون Setup
  • بيعرض البيانات في Interface نظيف
  • مناسب للـ Testing في بداية التطوير

⚙️ خطوات الاستخدام:

  • سجّل الـ Model في admin.py
  • أنشئ Superuser
  • افتح /admin/ في المتصفح
📝 تسجيل Model في Admin — admin.py
admin.py — تسجيل Model
from django.contrib import admin
from .models import Student

admin.site.register(Student)   # ← الـ Syntax الصح!

# ❌ غلط: admin.register(Student)
# ❌ غلط: site.admin.register(Student)
# ❌ غلط: models.admin.register(Student)
🚨 من امتحان 2021 و 2024 معاً: الـ Syntax الصح لتسجيل Model في الـ Admin هو admin.site.register(Model_name). مش admin.register() ومش django.admin.register(). ده السؤال الأكثر تكراراً في المادة!
👤 إنشاء Superuser
TERMINAL — Create Admin User
python manage.py createsuperuser

# الـ Terminal هيطلب منك:
# Username: admin
# Email: admin@example.com
# Password: ****

# بعدين افتح: http://127.0.0.1:8000/admin/
⚠️ من امتحان 2025: الأمر لإنشاء Superuser هو python manage.py createsuperuser — مش python manage.py createuser.
📥 Import Model — الـ Syntax الصح
Python — Import Model Syntax
# ✅ الصح — من امتحان 2024
from members.models import Member

# ❌ غلط
import Member from members
import members.Member
📌 من امتحان 2024: إزاي تعمل import لـ Model اسمه Member من App اسمها members؟ الإجابة الصح: from members.models import Member.
🎯

أسئلة الامتحانات — Django Part I

أسئلة من امتحانات 2021 و 2024 و 2025 مرتبة حسب ترتيب الشرح 🇪🇬

Q1 Final 2021 & 2024
Django is a type of:
A
Programming Language
B
Software / Application
C
Web Framework
D
Database
✅ الإجابة: C — Web Framework
Django هو Python Web Framework — مش لغة برمجة ومش Software عام ومش Database. Python هي اللغة، وDjango هو الـ Framework المبني بيها.
🇪🇬 زي الفرق بين اللغة الإنجليزية (Python) وكتاب مكتوب بيها (Django).
Q2 Final 2021 & 2024
Django is based on which pattern / framework?
A
MVC
B
MVVM
C
MVT (Model View Template)
D
None of the Above
✅ الإجابة: C — MVT
Django بيستخدم نمط MVT (Model–View–Template). الـ View في Django بيشتغل زي الـ Controller في MVC، والـ Template بيشتغل زي الـ View في MVC.
🇪🇬 المصطلح: Model = البيانات، View = المنطق، Template = الشكل.
Q3 Final 2024
Django architecture consists of ______:
A
Model and View only
B
Model, View, and Template
C
Template and View only
D
Model and Template only
✅ الإجابة: B — Model, View, Template
MVT = Model + View + Template. الثلاثة مع بعض ضروريين.
🇪🇬 لما السؤال يسأل عن Django Architecture → دايماً الإجابة الثلاثة مع بعض.
Q4 Final 2021
What is a Django App?
A
An extended package with base package Django
B
A Python package with its own components
C
Both A and B
D
None of the above
⚠️ الإجابة في الامتحان: C — Both A and B
علمياً، الـ Django App هي Python Package ولها مكوناتها الخاصة (Models, Views, Templates, URLs). صياغة "An extended package..." في الاختيار A غير دقيقة تقنياً، لكن تم احتسابها كـ Both في الامتحان.
🇪🇬 لما السؤال يقول "Both" أو "All" في Django، الغالب هي الإجابة المطلوبة في الامتحانات!
Q5 Final 2024
What is a correct syntax for creating a Django project?
A
django start my_tennis_club
B
py manage.py start-django my_tennis_club
C
django-admin startproject my_tennis_club
D
None of the previous
✅ الإجابة: C — django-admin startproject my_tennis_club
الأمر الصح لإنشاء مشروع Django جديد هو django-admin startproject project_name.
🇪🇬 حفظ: django-admin = أداة الأوامر. startproject = إنشاء مشروع.
Q6 Final 2021
What does {{ name }} mean in Django Templates?
A
{{ name }} will be output as-is
B
It will display the word "name"
C
Replaced with the Python variable's value
D
None of the above
✅ الإجابة: C — Replaced with Python variable value
الأقواس المزدوجة {{ name }} في الـ Template = متغير Python. Django بيبدّل {{ name }} بالقيمة الفعلية من الـ context dictionary.
🇪🇬 {{ }} = Variable. {% %} = Logic Tag. {# #} = Comment.
Q7 Final 2024
In Django templates, {% %} is used for:
A
Displaying a Python variable value
B
Defining HTML content / logic tags
C
Adding a comment
D
None of the above
✅ الإجابة: B — Defining HTML content / logic tags
{% %} = template tags للـ Logic (for, if, block, load). مش للعرض ومش للـ comments.
🇪🇬 Option A غلط لأن {{ }} هو اللي بيعرض variable. {% %} للـ Logic زي for وif.
Q8 Final 2021
Which of the following is a valid Django template forloop attribute?
A
forloop.reverse
B
forloop.previous
C
forloop.counter
D
forloop.lastitem
✅ الإجابة: C — forloop.counter
الـ Valid forloop attributes هي: counter، counter0، revcounter، first، last.
ملاحظة مهمة: الامتحان ظهر فيه forloop.counter() بأقواس — ده غلط! بدون أقواس. وforloop.reverse و forloop.previous و forloop.lastitem = مش موجودين.
🇪🇬 الـ forloop attributes مش Methods — مش ليها أقواس!
Q9 Final 2024
To perform programming logic in Django templates, you can use 'template tags'. What is the correct syntax to start a 'for' loop?
A
(for x in y)
B
<% for x in y %>
C
{% for x in y %}
D
None of the previous
✅ الإجابة: C — {% for x in y %}
الـ Django Template Language بيستخدم {% %} للـ Tags. الـ for loop يبدأ بـ {% for x in y %} وبينتهي بـ {% endfor %}.
🇪🇬 Option A صيغة Python عادية. Option B صيغة PHP/ERB. الصح دايماً {% %} في Django.
Q10 Final 2021 & 2024
To register a model in the Django admin panel, you write:
A
admin.site.register(Model_name)
B
admin.register(Model_name)
C
django.admin.register()
D
Model.admin.register()
✅ الإجابة: A — admin.site.register(Model_name)
ده السؤال الأكثر تكراراً — جاء في 2021 و2024 معاً! الـ Syntax الصح دايماً هو admin.site.register().
🇪🇬 احفظ ده كويس: admin.site.register(اسم الـ Model). لازم يكون admin.site مش admin بس.
Q11 Final 2024
For a model to be visible in the admin interface it has to be registered in which file?
A
settings.py
B
admin.py (using admin.site.register(Model_name))
C
views.py
D
models.py
✅ الإجابة: B — admin.py
عشان Model يظهر في الـ Admin Panel، لازم تسجّله في admin.py بالأمر admin.site.register(Model_name).
🇪🇬 من 2025: للـ Admin بتسجّل في admin.py مش settings.py!
Q12 Final 2021
What are Migrations in Django?
A
They track changes to the database schema
B
Created by running makemigrations command
C
Apply changes to the database using migrate command
D
All of the above
✅ الإجابة: D — All of the above
الـ Migrations بتعمل الثلاثة حاجات: تتبّع تغييرات الـ Schema، بتتنشأ بـ makemigrations، وبتتطبّق بـ migrate.
🇪🇬 لما السؤال يقول "All" في Django، الغالب هي الإجابة الصح!
Q13 Final 2024
When you have done changes in a model in Django, which command has to be executed in order to make the changes take effect in the database?
A
python manage.py runmigrations
B
python manage.py executemigrations
C
python manage.py makemigrations
D
None of the previous
✅ الإجابة: D — None of the previous
الأمر اللي بيخلي التغييرات تتنفذ فعلياً في الـ Database هو python manage.py migrate وهو مش موجود في الاختيارات. makemigrations بيجهّز ملف الترحيل بس.
🇪🇬 makemigrations = خطوة 1 (بيجهّز). migrate = خطوة 2 (بيطبّق في الـ DB).
Q14 Final 2024
If you have a Django application named members, and a model named Member, what is the correct syntax to import the model?
A
from members.models import Member
B
import Member from members
C
import members.Member
D
None of the previous
✅ الإجابة: A — from members.models import Member
الـ Models في Django بتكون في ملف models.py داخل الـ App. الـ Syntax الصح هو from app_name.models import ModelName.
🇪🇬 دايماً: from [اسم الـ App].models import [اسم الـ Model]
Q15 Final 2025 — True/False
Django views represents the presentation layer of Django.
A
True
B
False
✅ الإجابة: B — False
الـ Views في Django تمثل الـ Logic Layer (زي الـ Controller في MVC). الـ Presentation Layer هو الـ Templates — اللي بيتحكم في إيه اللي المستخدم بيشوفه.
🇪🇬 View = Logic. Template = Presentation. الخلط بينهم من أشهر الأخطاء!
Q16 Final 2025 — True/False
We can register models in the admin.py file to view it in the administration site of Django.
A
True
B
False
✅ الإجابة: A — True
صح — بنسجّل الـ Models في admin.py بالأمر admin.site.register(Model) عشان تظهر في الـ Admin Interface.
Q17 Final 2025 — True/False
When you create a Django project on your computer, you will get a folder for your project with a specific content including templates file.
A
True
B
False
✅ الإجابة: B — False
لما تعمل django-admin startproject، الملفات اللي بتتولد هي: manage.py، settings.py، urls.py، wsgi.py، asgi.py. ملف templates مش من ضمن الملفات الافتراضية — إنت اللي بتعمله يدوياً.
🇪🇬 الـ templates folder مش بيتعمل تلقائياً مع startproject.
Q18 Final 2025 — True/False
Django comes with a built-in user interface that allows you to administrate your data. To create such user, you write: python mange.py createuser
A
True
B
False
✅ الإجابة: B — False
الجزء الأول صح — Django عنده Admin Interface مدمج. لكن الأمر python manage.py createuser غلط!
الأمر الصح هو: python manage.py createsuperuser
🇪🇬 احفظ: createsuperuser مش createuser!
Q19 Final 2025 — True/False
"migrate" command in Django is used to show the changes happened in the database.
A
True
B
False
✅ الإجابة: B — False
الأمر migrate بيطبّق التغييرات على الـ Database (Apply Changes) — مش بيعرضها فقط. اللي بيعمل الملف الوصفي هو makemigrations.
🇪🇬 migrate = بيطبّق. makemigrations = بيولّد ملف التغييرات.
Q20 Final 2025 — True/False
If an application is running on Web Server Gateway Interface (WSGI), then it will handle client requests in a sequential manner.
A
True
B
False
✅ الإجابة: A — True
الـ WSGI (Web Server Gateway Interface) بيتعامل مع الـ Requests بشكل Synchronous / Sequential — طلب طلب بالترتيب. للتعامل مع الـ Requests بشكل Async، بيستخدم ASGI.
🇪🇬 WSGI = Sequential (متزامن). ASGI = Async (غير متزامن).
Q21 Final 2025 — True/False
For a model to be visible in the admin interface it has to be registered in the settings.py file.
A
True
B
False
✅ الإجابة: B — False
الـ settings.py مكانه تسجيل الـ Apps (في INSTALLED_APPS) — مش الـ Models. الـ Models بتتسجّل في admin.py بالأمر admin.site.register().
🇪🇬 settings.py = للـ Apps. admin.py = للـ Models.