Django Templates — شرح عربي
04 — Templates وStatic وForms
Software • 2027
النسخة المحدثة بعد مراجعة شاملة: نفس المسار الكامل مع snapshots حديثة للميديا الجديدة و3 مختبرات Debug عملية مدمجة كمسارات دعم.
شاهد تجربة حقيقية من داخل المسار قبل أن تبدأ
داخل المسار
صور وفيديوهات وأمثلة مأخوذة من المحتوى المنشور نفسه، حتى تعرف أسلوب التعلم قبل التسجيل.
Django Templates — شرح عربي
04 — Templates وStatic وForms
يشرح كيف يفرض Django هيكلًا ودورة تشغيل مقارنة بمكتبة عادية. اربط هذه النقطة بمشروع صغير، وحدد أين تظهر في ملفات Django أو كود Python بدل حفظ المصطلح فقط.
يربط Model وTemplate وView بمسؤوليات واضحة دون خلط. اربط هذه النقطة بمشروع صغير، وحدد أين تظهر في ملفات Django أو كود Python بدل حفظ المصطلح فقط.
يميّز إعداد المشروع عن feature/domain داخل app. اربط هذه النقطة بمشروع صغير، وحدد أين تظهر في ملفات Django أو كود Python بدل حفظ المصطلح فقط.
يثبت Django ويتحقق من الإصدار من نفس venv. اربط هذه النقطة بمشروع صغير، وحدد أين تظهر في ملفات Django أو كود Python بدل حفظ المصطلح فقط.
يستخدم startproject ويفهم الملفات الناتجة. اربط هذه النقطة بمشروع صغير، وحدد أين تظهر في ملفات Django أو كود Python بدل حفظ المصطلح فقط.
يشغل الخادم التطويري ويتأكد من نجاح أول request. اربط هذه النقطة بمشروع صغير، وحدد أين تظهر في ملفات Django أو كود Python بدل حفظ المصطلح فقط.
خطة التعلم
ابدأ من أساس الويب والـHTTP قبل كتابة Django.
تمييز مكوّنات تطبيق الويب
يفرّق بين المتصفح والواجهة الأمامية والـBackend وقاعدة البيانات ويشرح مسؤولية كل جزء.
تحديد مسؤوليات الـBackend
يحدد ما يجب أن ينفذه الخادم مثل التحقق والصلاحيات وحفظ البيانات بدل الاعتماد على الواجهة.
تتبّع فتح صفحة بسيطة
يتتبع انتقال الطلب من المستخدم حتى الخادم وعودة النتيجة دون القفز على المراحل.
تشريح HTTP Request
يميّز Method وPath وQuery Parameters وHeaders وBody داخل طلب واحد.
فهم HTTP Response
يشرح Body وHeaders وStatus Code وكيف تعبّر الاستجابة عن النتيجة.
اختيار Method وStatus مناسبين
يختار GET/POST/PATCH/DELETE وحالات 2xx/4xx/5xx وفق السيناريو.
أتقن مهارات 01 — Python التي تحتاجها قبل Django عمليًا قبل الانتقال للمرحلة التالية.
فهم Python Interpreter والبيئة المعزولة
يشرح لماذا نستخدم virtual environment وما الذي تعزله.
إنشاء وتفعيل venv
ينشئ بيئة Python ويفعّلها ويتحقق من interpreter وpip المستخدمين.
إدارة الحزم والاعتمادات
يثبت حزمًا ويقرأ requirements ويثبتها بطريقة قابلة لإعادة الإنتاج.
كتابة دوال واضحة
يستخدم parameters وreturn ويقسم المنطق إلى دوال صغيرة قابلة للاختبار.
التحكم في التدفق
يستخدم if/elif/else والحلقات لفهم منطق Backend شائع.
قراءة كود Python موجود
يتتبع القيم والفروع والدوال بدل حفظ الصياغة فقط.
أتقن مهارات 02 — Django من الصفر: أول مشروع عمليًا قبل الانتقال للمرحلة التالية.
التمييز بين Framework وLibrary
يشرح كيف يفرض Django هيكلًا ودورة تشغيل مقارنة بمكتبة عادية.
فهم MTV في Django
يربط Model وTemplate وView بمسؤوليات واضحة دون خلط.
فهم Project مقابل App
يميّز إعداد المشروع عن feature/domain داخل app.
تثبيت Django داخل البيئة الصحيحة
يثبت Django ويتحقق من الإصدار من نفس venv.
إنشاء أول Project
يستخدم startproject ويفهم الملفات الناتجة.
تشغيل المشروع والتحقق منه
يشغل الخادم التطويري ويتأكد من نجاح أول request.
أتقن مهارات 03 — من URL إلى Response: Routing وViews عمليًا قبل الانتقال للمرحلة التالية.
بناء URL Patterns
يستخدم path ويعرّف routes واضحة وقابلة للصيانة.
تقسيم URLs باستخدام include
يفصل URLconf لكل app ويحافظ على root URL نظيف.
استخدام أسماء Routes وPath Converters
يستخدم name وconverters تمهيدًا لـreverse وروابط مستقرة.
كتابة View بسيطة
يكتب view تستقبل HttpRequest وتعيد استجابة واضحة.
قراءة بيانات الطلب من المصدر الصحيح
يميّز GET وPOST وheaders وuser وpath parameters.
فصل منطق HTTP عن منطق العمل
يتجنب وضع كل قواعد المشروع داخل view واحدة.
حل أخطاء URLconf وinclude وpath converters من كود حقيقي.
بناء URL Patterns
يستخدم path ويعرّف routes واضحة وقابلة للصيانة.
تقسيم URLs باستخدام include
يفصل URLconf لكل app ويحافظ على root URL نظيف.
استخدام أسماء Routes وPath Converters
يستخدم name وconverters تمهيدًا لـreverse وروابط مستقرة.
أتقن مهارات 04 — Templates وStatic وForms عمليًا قبل الانتقال للمرحلة التالية.
ربط View بـTemplate
يستخدم render ويمرر context من view إلى template.
عرض Context بأمان
يعرض قيمًا وقوائم ويفهم أساسيات auto-escaping.
فصل العرض عن منطق البيانات
يبقي الاستعلامات والمنطق الثقيل خارج القالب.
بناء Base Template
يستخدم extends وblock لتقليل التكرار.
استخدام Tags وFilters
يستخدم for وif وfilters للأغراض العرضية.
تجنب Business Logic داخل Template
يعرف متى ينقل المنطق إلى view أو model أو service.
أتقن مهارات 05 — Models وMigrations وAdmin عمليًا قبل الانتقال للمرحلة التالية.
تحويل الكيان إلى Model
يحوّل متطلبات بسيطة إلى Model وحقول مناسبة.
اختيار Field Options بوعي
يفرق بين null وblank وdefault وchoices وتأثير كل منها.
إضافة تمثيل وسلوك بسيط للموديل
يستخدم __str__ وسلوك domain صغير بوضوح.
فهم makemigrations مقابل migrate
يشرح الفرق بين توليد خطة التغيير وتطبيقها على قاعدة البيانات.
قراءة Migration قبل تطبيقها
يتعرف على CreateModel وAddField وAlterField ومخاطرها.
تنفيذ تغييرات Schema بأمان
يتعامل مع الحقول الإلزامية والrenames دون فقد بيانات عشوائي.
أتقن مهارات 06 — Django ORM من CRUD إلى الأداء عمليًا قبل الانتقال للمرحلة التالية.
إنشاء بيانات عبر ORM
يستخدم objects.create وsave ويفهم متى تحدث الكتابة.
قراءة كائن واحد أو مجموعة
يميز get وfirst وall ويعرف مخاطر DoesNotExist وMultipleObjectsReturned.
تحديث وحذف البيانات
يستخدم update وsave وdelete مع فهم أثر كل اختيار.
بناء QuerySet تدريجيًا
يستخدم filter وexclude وorder_by دون تنفيذ مبكر غير لازم.
استخدام Lookups
يستخدم contains وicontains وgte وlte وin ونحوها بوضوح.
تركيب شروط مع Q Objects
يبني AND/OR مع Q دون تحويل الاستعلام إلى منطق مبهم.
أتقن مهارات 07 — العلاقات والValidation والTransactions عمليًا قبل الانتقال للمرحلة التالية.
اختيار نوع العلاقة الصحيح
يميّز ForeignKey وOneToOne وManyToMany ويختارها حسب cardinality.
فهم on_delete
يختار CASCADE وPROTECT وSET_NULL وفق أثر الحذف في الـdomain.
استخدام related_name بوضوح
يسمّي العلاقات العكسية بما يجعل الاستعلامات مفهومة.
تحديد طبقة الـValidation
يقرر هل القاعدة تخص Model أو Form أو Serializer أو Service.
إرجاع أخطاء محددة
يربط الخطأ بالحقل أو القاعدة الصحيحة بدل رسالة عامة.
منع تكرار قواعد التحقق
يوحّد قواعد الـdomain المشتركة حتى لا تختلف الواجهات عن الـAPI.
أتقن مهارات 08 — Users وAuth وPermissions وSecurity عمليًا قبل الانتقال للمرحلة التالية.
فهم User Model في Django
يشرح وظيفة نموذج المستخدم ولماذا قد تحتاج Custom User من بداية المشروع.
إعداد AUTH_USER_MODEL مبكرًا
يضبط نموذج المستخدم قبل بناء باقي العلاقات والمهاجرات.
إنشاء كلمات المرور بأمان
يستخدم أدوات Django لإنشاء المستخدمين والتحقق من كلمات المرور دون تخزين خام.
تنفيذ Login وLogout
يستخدم authenticate وlogin وlogout ويفهم نتيجة كل خطوة.
فهم request.user
يميّز AnonymousUser عن مستخدم authenticated داخل الطلب.
فهم Sessions وCookies
يتتبع كيف تربط الجلسة الطلبات اللاحقة بهوية المستخدم دون وضع كلمة المرور في كل طلب.
أتقن مهارات 09 — Django REST Framework من الصفر عمليًا قبل الانتقال للمرحلة التالية.
فهم REST Resource وEndpoint
يمثل الكيانات كموارد لها URLs وعمليات HTTP واضحة.
بناء Serializer أولي
يحوّل Model إلى تمثيل API ويحدد الحقول المقروءة والقابلة للكتابة.
التحقق من Input داخل Serializer
يستخدم validation قبل الحفظ ويقرأ validated_data بدل البيانات الخام.
بناء Endpoint باستخدام APIView
يتعامل مع request وResponse داخل DRF بوضوح.
استخدام Generic Views
يعيد استخدام أنماط list/create/retrieve/update/delete عندما تكون مناسبة.
ربط queryset وserializer_class
يفهم كيف يحدد DRF البيانات والتمثيل لكل View.
أتقن مهارات 10 — DRF احترافي: Auth وPermissions وFiltering عمليًا قبل الانتقال للمرحلة التالية.
تمييز أساليب Authentication للـAPI
يفرق بين Session وToken وJWT كمفاهيم ويعرف أين يناسب كل أسلوب.
تكوين Authentication Classes
يحدد كيف يقرأ DRF هوية المستخدم من الطلب.
فهم إرسال Credentials
يتتبع كيف تنتقل بيانات الاعتماد في cookies أو headers دون خلطها مع بيانات المورد.
استخدام IsAuthenticated وما شابه
يفرض وجود هوية قبل الوصول للموارد المحمية.
كتابة Permission مخصصة
يحوّل قاعدة وصول واضحة إلى Permission قابلة للاختبار.
فرض Object-Level Permission
يتأكد من صلاحية المستخدم على الكائن نفسه وليس على نوع المورد فقط.
أتقن مهارات 11 — Testing وDebugging وPerformance عمليًا قبل الانتقال للمرحلة التالية.
اختبار Model Rules
يكتب tests تثبت defaults والقيود والسلوك المهم داخل الـModel.
اختبار Validation وحدود البيانات
يتأكد أن الحالات غير الصحيحة تُرفض بشكل متوقع.
فصل Pure Logic عن Database Tests
يختار اختبارًا سريعًا بلا قاعدة بيانات عندما لا يحتاج persistence.
اختبار Happy Path للـAPI
يثبت status code وresponse shape والتغييرات المحفوظة.
اختبار Unauthenticated وForbidden
يثبت الفرق بين غياب الهوية وعدم كفاية الصلاحية.
اختبار Invalid Input وNot Found
يتعامل مع الأخطاء كجزء أساسي من العقد وليس حالات ثانوية.
قراءة Traceback واستخدام Logs وعزل سبب المشكلة قبل تعديل الكود.
قراءة Traceback من أسفل لأعلى
يعثر على exception والمكان الأقرب إلى كود المشروع قبل تعديل أي شيء.
استخدام Logs كدليل
يسجل context مفيدًا بدون أسرار ويقارن بين الطلب والخطأ.
تصغير مساحة المشكلة
يعزل route أو query أو function أو input حتى يثبت السبب الحقيقي.
ابدأ Docker من الصفر حرفيًا وافهم الحاويات والصور قبل الدمج مع Django.
فهم المشكلة التي يحلها Docker
يشرح كيف تمنع الحاويات اختلاف البيئة والاعتمادات بين جهاز المطور والخادم.
التمييز بين Container وVirtual Machine
يقارن العزل واستخدام نظام التشغيل والموارد دون اعتبارهما الشيء نفسه.
فهم حدود الحاوية
يعرف أن الحاوية Process معزولة وليست جهازًا افتراضيًا كاملًا.
معرفة ما لا يحله Docker تلقائيًا
يميّز بين توحيد البيئة وبين مشاكل الكود والبيانات والأمان التي تحتاج تصميمًا مستقلًا.
فهم Docker Engine وDaemon وCLI وDesktop
يربط بين الأمر الذي يكتبه المستخدم والمحرك الذي ينشئ الصور والحاويات.
تثبيت Docker والتحقق منه
يستخدم docker version وdocker info ليتأكد أن العميل والمحرك يعملان.
أتقن مهارات 13 — Dockerfile وبناء Images باحتراف عمليًا قبل الانتقال للمرحلة التالية.
فهم دور Dockerfile
يشرح أن Dockerfile وصف قابل لإعادة الإنتاج لبناء Image وليس سكربت تشغيل عشوائي.
استخدام FROM وWORKDIR
يختار base image مناسبة ويحدد working directory داخل الصورة.
استخدام COPY وRUN
ينقل الملفات وينفذ خطوات البناء ويفهم أنها تحدث أثناء build.
التمييز بين CMD وRUN
يعرف أن CMD يحدد أمر التشغيل الافتراضي بينما RUN يبني طبقة أثناء إنشاء الصورة.
فهم Build Context
يعرف أي ملفات يستطيع docker build رؤيتها ولماذا حجم الـcontext مهم.
استخدام docker build وTags
يبني Image ويعطيها اسمًا وtag واضحين ويقرأ نتيجة البناء.
أتقن مهارات 14 — Volumes وNetworks وDocker Compose عمليًا قبل الانتقال للمرحلة التالية.
فهم لماذا تضيع البيانات داخل طبقة Container
يعرف أن حذف الحاوية قد يزيل البيانات الموجودة في طبقة الكتابة الخاصة بها.
استخدام Named Volume
يحفظ بيانات مستمرة خارج عمر الحاوية ويعيد ربطها عند إنشاء Container جديد.
استخدام Bind Mount
يربط ملفًا أو مجلدًا من جهاز التطوير داخل الحاوية ويفهم فائدته ومخاطره.
اختيار Volume أو Bind Mount
يختار التخزين المناسب للكود والبيانات وقواعد البيانات بدل استخدام نوع واحد لكل شيء.
فهم Port Mapping
يميّز port داخل الحاوية عن port المنشور على جهاز الـHost.
فهم Docker Network وDNS
يتصل Container بخدمة أخرى باستخدام اسم الخدمة داخل الشبكة بدل IP ثابت.
حل مشاكل services وnetworking وcompose config من سيناريوهات عملية.
فهم Compose Application Model
يفهم أن compose.yaml يصف عدة Services تعمل معًا كStack واحدة.
تعريف service باستخدام image أو build
يميّز بين استخدام صورة جاهزة وبناء صورة من Dockerfile داخل Compose.
تمرير environment وvolumes وnetworks
يربط الإعدادات والتخزين والشبكات بكل service بصورة واضحة.
تشغيل وإيقاف الـStack
يستخدم docker compose up وdown وps ويفهم ما الذي يُنشأ أو يُحذف.
أتقن مهارات 15 — Django + PostgreSQL + Docker Compose عمليًا عمليًا قبل الانتقال للمرحلة التالية.
كتابة Dockerfile مناسب لـDjango
يبني صورة Python واضحة لمشروع Django باستخدام WORKDIR وdependencies ونسخ الكود.
ترتيب تثبيت Requirements للاستفادة من Cache
ينسخ ملف الاعتمادات ويثبتها قبل نسخ الكود المتغير باستمرار.
اختيار Command لتشغيل Django
يفهم الفرق بين أمر التطوير وأمر التشغيل المناسب للبيئة المستهدفة.
بناء وتشغيل Django Container
يبني الصورة ويعرض port ويتحقق أن request يصل للتطبيق من خارج الحاوية.
إضافة PostgreSQL كـService
يشغل قاعدة البيانات في Container مستقل بدل وضعها داخل Container التطبيق.
تهيئة بيانات اتصال PostgreSQL
يمرر database name وuser وpassword كإعدادات runtime مناسبة.
أتقن مهارات 16 — Production: Security وPerformance وDeployment عمليًا قبل الانتقال للمرحلة التالية.
فصل إعدادات Development عن Production
يفهم أن DEBUG وALLOWED_HOSTS والأسرار وقواعد البيانات يجب أن تختلف حسب البيئة.
إدارة Secrets عبر Environment
يخرج المفاتيح وكلمات المرور من المستودع ويجعل غياب القيم الحرجة يفشل بوضوح.
تشغيل manage.py check --deploy
يستخدم فحوص Django الخاصة بالنشر كجزء من checklist قبل استقبال traffic.
فهم WSGI وASGI
يميّز واجهة التشغيل التقليدية عن الواجهة غير المتزامنة ويعرف دور كل منهما.
استخدام Production Application Server
يشغّل Django عبر Gunicorn أو Uvicorn/ASGI بدل الاعتماد على runserver.
اختيار Worker Model مناسب
يفهم أثر عدد workers ونمط التطبيق على التزامن والموارد بصورة عملية.
نفّذ مشروع Backend نهائي يجمع Django وDRF وTesting وDocker وPostgreSQL وProduction.
تحويل المتطلبات إلى Actors وUse Cases
يحدد من يستخدم النظام وما العمليات الأساسية قبل كتابة Models.
تصميم Models وRelationships من القيود
يبني نموذج البيانات حول القواعد التي يجب أن تبقى صحيحة.
كتابة API Contracts قبل التنفيذ
يحدد methods وpaths وinput وoutput وpermissions وحالات الفشل.
بناء Authentication وOwnership
يربط الموارد بالمستخدم الموثق ويمنع الوصول غير المصرح به.
تنفيذ CRUD كامل
يبني endpoints للإنشاء والقراءة والتعديل والحذف بعقود متسقة.
تجميع Business Rules في طبقات قابلة للاختبار
يحافظ على منطق المجال خارج الواجهات عندما يكون قابلاً لإعادة الاستخدام.
إعادة إثبات جميع مهارات المسار من أساس الويب حتى Production قبل إتمام المسار والحصول على الشهادة.
تمييز مكوّنات تطبيق الويب
يفرّق بين المتصفح والواجهة الأمامية والـBackend وقاعدة البيانات ويشرح مسؤولية كل جزء.
تحديد مسؤوليات الـBackend
يحدد ما يجب أن ينفذه الخادم مثل التحقق والصلاحيات وحفظ البيانات بدل الاعتماد على الواجهة.
تتبّع فتح صفحة بسيطة
يتتبع انتقال الطلب من المستخدم حتى الخادم وعودة النتيجة دون القفز على المراحل.
تشريح HTTP Request
يميّز Method وPath وQuery Parameters وHeaders وBody داخل طلب واحد.
فهم HTTP Response
يشرح Body وHeaders وStatus Code وكيف تعبّر الاستجابة عن النتيجة.
اختيار Method وStatus مناسبين
يختار GET/POST/PATCH/DELETE وحالات 2xx/4xx/5xx وفق السيناريو.
تطوير الويب باستخدام Django — من الصفر للاحتراف
النسخة المحدثة بعد مراجعة شاملة: نفس المسار الكامل مع snapshots حديثة للميديا الجديدة و3 مختبرات Debug عملية مدمجة كمسارات دعم.