Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 25

‫ما هو جانجو؟‬

‫‪ Django‬هو إطار عمل ‪ Python‬الذي يسهل إنشاء مواقع الويب باستخدام ‪.Python‬‬

‫يعتني ‪ Django‬باألشياء الصعبة حتى تتمكن من التركيز على بناء تطبيقات الويب الخاصة بك‪.‬‬

‫يؤكد ‪ Django‬على إمكانية إعادة استخدام المكونات‪ ،‬والتي يشار إليها أيًضا باسم ‪( DRY‬ال تكرر نفسك)‪ ،‬ويأتي مزوًد ا بميزات جاهزة‬
‫لالستخدام مثل نظام تسجيل الدخول‪ ،‬واتصال قاعدة البيانات وعمليات ‪( CRUD‬إنشاء قراءة وتحديث وحذف)‪.‬‬

‫يعد ‪ Django‬مفيًد ا بشكل خاص لمواقع الويب التي تعتمد على قواعد البيانات‪.‬‬

‫كيف يعمل جانغو؟‬


‫يتبع ‪ Django‬نمط تصميم ‪( MVT‬قالب عرض النموذج)‪.‬‬

‫النموذج ‪ -MODEL‬البيانات التي تريد تقديمها‪ ،‬وعادًة ما تكون بيانات من قاعدة بيانات‪.‬‬

‫عرض ‪ -View‬معالج الطلب الذي يقوم بإرجاع القالب والمحتوى ذي الصلة ‪ -‬بناًء على الطلب المقدم من المستخدم‪.‬‬

‫القالب ‪ - Template‬ملف نصي (مثل ملف ‪ )HTML‬يحتوي على تخطيط صفحة الويب‪ ،‬مع منطق حول كيفية عرض البيانات‪.‬‬

‫نموذج ‪MODELS‬‬
‫يوفر النموذج بيانات من قاعدة البيانات‪.‬‬

‫في ‪ ،Django‬يتم تسليم البيانات كرسم خرائط عالئقي للكائنات (‪ ،)ORM‬وهي تقنية مصممة لتسهيل العمل مع قواعد البيانات‪.‬‬

‫الطريقة األكثر شيوًع ا الستخراج البيانات من قاعدة البيانات هي ‪ .SQL‬إحدى مشكالت ‪ SQL‬هي أنه يجب أن يكون لديك فهم جيد لبنية‬
‫قاعدة البيانات حتى تتمكن من العمل معها‪.‬‬

‫يسهل ‪ ،Django‬مع ‪ ،ORM‬التواصل مع قاعدة البيانات‪ ،‬دون الحاجة إلى كتابة عبارات ‪ SQL‬معقدة‪.‬‬

‫عادًة ما توجد النماذج في ملف يسمى‪.models.py‬‬


‫عرض ‪Views‬‬
‫العرض هو وظيفة أو طريقة تأخذ طلبات ‪ http‬كوسيطات‪ ،‬وتستورد النموذج (النماذج) ذات الصلة‪ ،‬وتكتشف البيانات التي سيتم إرسالها‬
‫إلى القالب‪ ،‬وترجع النتيجة النهائية‪.‬‬

‫عادًة ما توجد طرق العرض في ملف يسمى ‪view.py‬‬

‫القالب ‪Template‬‬
‫القالب هو ملف تصف فيه كيفية تمثيل النتيجة‪.‬‬

‫غالًبا ما تكون القوالب عبارة عن ملفات بتنسيق ‪ ،html.‬مع كود ‪ HTML‬الذي يصف تخطيط صفحة الويب‪ ،‬ولكن يمكن أيًض ا أن تكون‬
‫بتنسيقات ملفات أخرى لتقديم نتائج أخرى‪ ،‬ولكننا سنركز على ملفات ‪.html.‬‬

‫يستخدم ‪ Django‬لغة ‪ HTML‬القياسية لوصف التخطيط‪ ،‬ولكنه يستخدم عالمات ‪ Django‬إلضافة المنطق‪:‬‬

‫>‪<h1>My Homepage</h1‬‬

‫>‪<p>My name is {{ firstname }}.</p‬‬

‫توجد قوالب التطبيق في مجلد يسمى ‪.templates‬‬

‫عناوين ‪URL‬‬

‫يوفر ‪ Django‬أيًض ا طريقة للتنقل بين الصفحات المختلفة في موقع الويب‪.‬‬

‫عندما يطلب مستخدم عنوان ‪ ،URL‬يقرر ‪ Django‬العرض الذي سيرسله إليه‪.‬‬

‫يتم ذلك في ملف يسمى ‪.urls.py‬‬


‫ماذا يحدث؟‬

‫عندما تقوم بتثبيت ‪ Django‬وإنشاء أول تطبيق ويب ‪ ،Django‬ويطلب المتصفح عنوان ‪ ،URL‬فهذا ما يحدث بشكل أساسي‪:‬‬

‫يتلقى ‪ Django‬عنوان ‪ ،URL‬ويتحقق من ملف ‪ ،urls.py‬ويستدعي العرض الذي يطابق عنوان ‪.URL‬‬

‫يتحقق العرض الموجود في موقع ‪ view.py‬من النماذج ذات الصلة‪.‬‬

‫يتم استيراد النماذج من ملف‪.models.py‬‬

‫يقوم العرض بعد ذلك بإرسال البيانات إلى قالب محدد في مجلد ‪templates‬‬

‫يحتوي القالب على عالمات ‪ HTML‬و‪ ،Django‬ومع البيانات يقوم بإرجاع محتوى ‪ HTML‬النهائي مرة أخرى إلى المتصفح‪.‬‬

‫يمكن لـ ‪ Django‬أن يفعل أكثر من ذلك بكثير‪ ،‬ولكن هذا هو ما ستتعلمه في هذا البرنامج التعليمي‪ ،‬وهي الخطوات األساسية في تطبيق‬
‫ويب بسيط تم إنشاؤه باستخدام ‪.Django‬‬

‫تاريخ جانغو‬
‫تم اختراع ‪ Django‬بواسطة ‪ Lawrence Journal-World‬في عام ‪ ،2003‬لتلبية المواعيد النهائية القصيرة في الصحيفة وفي نفس‬
‫الوقت تلبية متطلبات مطوري الويب ذوي الخبرة‪.‬‬

‫تم اإلصدار األولي للجمهور في يوليو ‪.2005‬‬

‫أحدث إصدار من ‪ Django‬هو ‪( 4.0.3‬مارس ‪.)2022‬‬

‫بداية جانغو‬
‫لتثبيت ‪ ،Django‬يجب أن يكون لديك ‪ Python‬مثبًت ا ومدير حزم مثل ‪.PIP‬‬

‫تم تضمين ‪ PIP‬في ‪ Python‬من اإلصدار ‪.3.4‬‬

‫جانغو يتطلب بايثون‬


‫للتحقق من تثبيت ‪ Python‬على نظامك‪ ،‬قم بتشغيل هذا األمر في موجه األوامر‪:‬‬

‫‪python --version‬‬
‫إذا تم تثبيت بايثون‪ ،‬فستحصل على نتيجة برقم اإلصدار‪ ،‬مثل هذا‬

‫‪Python 3.9.2‬‬
‫إذا وجدت أنه ليس لديك لغة ‪ Python‬مثبتة على جهاز الكمبيوتر الخاص بك‪ ،‬فيمكنك تنزيلها مجاًن ا من الموقع التالي‪:‬‬
‫‪/https://www.python.org‬‬

‫‪pip‬‬
‫لتثبيت ‪ ،Django‬يجب عليك استخدام مدير الحزم مثل ‪ ،PIP‬المضمن في ‪ Python‬من اإلصدار ‪.3.4‬‬

‫للتحقق من تثبيت ‪ PIP‬على نظامك‪ ،‬قم بتشغيل هذا األمر في موجه األوامر‪:‬‬

‫‪pip –version‬‬
‫إذا تم تثبيت ‪ ،PIP‬فستحصل على نتيجة برقم اإلصدار‪.‬‬

‫بالنسبة لي‪ ،‬على جهاز يعمل بنظام ‪ ،Windows‬تبدو النتيجة كما يلي‪:‬‬

‫)‪pip 20.2.3 from c:\python39\lib\site-packages\pip (python 3.9‬‬

‫إذا لم يكن لديك ‪ PIP‬مثبًت ا‪ ،‬فيمكنك تنزيله وتثبيته من هذه الصفحة‪/https://pypi.org/project/pip :‬‬
‫بيئة افتراضية‬
‫يقترح أن تكون هناك بيئة افتراضية مخصصة لكل مشروع جانغو‪ ،‬وفي الفصل التالي ستتعلم كيفية إنشاء بيئة افتراضية‪ ،‬ومن ثم تثبيت‬
‫جانغو فيها‬

‫جانغو ‪ -‬إنشاء بيئة افتراضية‬


‫بيئة افتراضية‬
‫ُيقترح أن يكون لديك بيئة افتراضية مخصصة لكل مشروع في ‪ ،Django‬وإحدى طرق إدارة البيئة االفتراضية هي ‪ ،venv‬المضمنة في‬
‫‪.Python‬‬

‫اسم البيئة االفتراضية هو اختيارك‪ ،‬في هذا البرنامج التعليمي سوف نسميها ‪.myworld‬‬

‫اكتب ما يلي في موجه األوامر‪ ،‬وتذكر االنتقال إلى المكان الذي تريد إنشاء مشروعك فيه‪:‬‬

‫‪Windows:‬‬

‫‪py -m venv myworld‬‬

‫‪Unix/MacOS:‬‬

‫‪python -m venv myworld‬‬

‫سيؤدي هذا إلى إعداد بيئة افتراضية‪ ،‬وإنشاء مجلد باسم "‪ "myworld‬يحتوي على مجلدات فرعية وملفات‪ ،‬مثل هذا‪:‬‬

‫‪myworld‬‬
‫‪Include‬‬
‫‪Lib‬‬
‫‪Scripts‬‬
‫‪pyvenv.cfg‬‬

‫ثم عليك تفعيل البيئة عن طريق كتابة هذا األمر‪:‬‬


‫‪Windows:‬‬

‫‪myworld\Scripts\activate.bat‬‬

‫‪Unix/MacOS:‬‬

‫‪source myworld/bin/activate‬‬

‫بمجرد تنشيط البيئة‪ ،‬سترى هذه النتيجة في موجه األوامر‪:‬‬

‫‪Windows:‬‬

‫>‪(myworld) C:\Users\Your Name‬‬

‫‪Unix/MacOS:‬‬

‫‪(myworld) ... $‬‬

‫مالحظة‪ :‬يجب عليك تنشيط البيئة االفتراضية في كل مرة تفتح فيها موجه األوامر للعمل على مشروعك‪.‬‬

‫تثبيت جانغو‬
‫في الفصل التالي‪ ،‬ستتعلم أخيًر ا كيفية تثبيت ‪!Django‬‬

‫تثبيت جانغو‬
‫اآلن‪ ،‬بعد أن أنشأنا بيئة افتراضية‪ ،‬نحن جاهزون لتثبيت ‪.Django‬‬

‫مالحظة‪ :‬تذكر تثبيت ‪ Django‬أثناء تواجدك في البيئة االفتراضية!‬

‫يتم تثبيت ‪ Django‬باستخدام ‪ ،pip‬باستخدام هذا األمر‪:‬‬

‫‪Windows:‬‬
(myworld) C:\Users\Your Name>py -m pip install Django

Unix/MacOS:

(myworld) ... $ python -m pip install Django

:)Windows ‫والتي ستعطي نتيجة تبدو هكذا (على األقل على جهازي الذي يعمل بنظام‬

Collecting Django
Downloading Django-4.0.3-py3-none-any.whl (8.0 MB)
MB 2.2 MB/s 8.0 |████████████████████████████████|
Collecting sqlparse>=0.2.2
Using cached sqlparse-0.4.2-py3-none-any.whl (42 kB)
Collecting asgiref<4,>=3.4.1
Downloading asgiref-3.5.0-py3-none-any.whl (22 kB)
"Collecting tzdata; sys_platform == "win32
Downloading tzdata-2021.5-py2.py3-none-any.whl (339 kB)
kB 6.4 MB/s 339 |████████████████████████████████|
Installing collected packages: sqlparse, asgiref, tzdata, Django
Successfully installed Django-4.0.3 asgiref-3.5.0 sqlparse-0.4.2 tzdata-
2021.5
WARNING: You are using pip version 20.2.3; however, version 22.3 is
.available
You should consider upgrading via the 'C:\Users\Your Name\myworld\Scripts\
.python.exe -m pip install --upgrade pip' command
!‫ والذي يعمل في بيئة افتراضية‬،‫ في مشروعك الجديد‬Django ‫هذا كل شيء! لقد قمت اآلن بتثبيت‬

‫ أو يونيكس؟‬،‫ ماك‬،‫ويندوز‬
‫ يستخدم‬،‫ مثل عند كتابة األوامر في موجه األوامر‬،‫ هناك بعض االختالفات الصغيرة‬.‫يمكنك تشغيل هذا المشروع على أي منهما‬
:MacOS python‫ و‬Unix ‫ بينما يستخدم‬،‫ باعتبارها الكلمة األولى في سطر األوامر‬Windows py

Windows:
‫‪py --version‬‬

‫‪Unix/MacOS:‬‬

‫‪python --version‬‬

‫في بقية هذا البرنامج التعليمي‪ ،‬سنستخدم أمر ‪.Windows‬‬

‫تحقق من إصدار جانغو‬


‫يمكنك التحقق من تثبيت ‪ Django‬عن طريق السؤال عن رقم اإلصدار الخاص به كما يلي‪:‬‬

‫(‪C:\Users\Your Name>django-admin --version )myworld‬‬

‫إذا تم تثبيت ‪ ،Django‬فستحصل على نتيجة برقم اإلصدار‪:‬‬

‫‪4.1.2‬‬
‫ماذا بعد؟‬

‫أنت اآلن جاهز إلنشاء مشروع ‪ Django‬في بيئة افتراضية على جهاز الكمبيوتر الخاص بك‪.‬‬

‫في الفصول التالية من هذا البرنامج التعليمي‪ ،‬سنقوم بإنشاء مشروع ‪ Django‬وإلقاء نظرة على الميزات المتنوعة لـ ‪ Django‬ونأمل أن‬
‫نجعلك مطور ‪.Django‬‬

‫جانغو إنشاء المشروع‬


‫مشروعي األول‬
‫بمجرد التوصل إلى اسم مناسب لمشروع ‪ Django‬الخاص بك‪ ،‬مثل اسمي‪ ،my_tennis_club :‬انتقل إلى المكان الذي تريد تخزين‬
‫الكود فيه في نظام الملفات (في البيئة االفتراضية)‪ ،‬وسأنتقل إلى المجلد ‪ ،myworld‬وأقوم بتشغيل هذا األمر في موجه األوامر‪:‬‬

‫‪django-admin startproject my_tennis_club‬‬


:‫ بالمحتوى التالي‬،‫ على جهاز الكمبيوتر الخاص بي‬my_tennis_club ‫ بإنشاء مجلد‬Django ‫يقوم‬

my_tennis_club
manage.py
my_tennis_club/
__init__.py
asgi.py
settings.py
urls.py
wsgi.py
‫ من المهم‬،‫ ولكن في الوقت الحالي‬،‫ ستتعرف على بعضها الحًق ا في هذا البرنامج التعليمي‬،‫هذه كلها ملفات ومجلدات ذات معنى محدد‬
.‫ هي‬- ‫ وأنه يمكنك البدء في إنشاء التطبيقات فيه هو‬،‫معرفة أن هذا هو موقع مشروعك‬

‫قم بتشغيل مشروع جانغو‬


.‫ يمكنك تشغيله ورؤية شكله في المتصفح‬،Django ‫اآلن بعد أن أصبح لديك مشروع‬

:‫ وقم بتنفيذ هذا األمر في موجه األوامر‬my_tennis_club/ ‫انتقل إلى المجلد‬

py manage.py runserver

:‫والتي سوف تنتج هذه النتيجة‬

Watching for file changes with StatReloader


Performing system checks...

System check identified no issues (0 silenced).

You have 18 unapplied migration(s). Your project may not work properly
until you apply the migrations for app(s): admin, auth, contenttypes,
sessions.
Run 'python manage.py migrate' to apply them.
October 27, 2022 - 13:03:14
Django version 4.1.2, using settings 'my_tennis_club.settings'
‫‪Starting development server at http://127.0.0.1:8000/‬‬
‫‪Quit the server with CTRL-BREAK.‬‬

‫افتح نافذة متصفح جديدة واكتب ‪/http://127.0.0.1:8000‬في شريط العناوين‪.‬‬

‫النتائج‪:‬‬

‫ماذا بعد؟‬
‫لدينا مشروع جانغو!‬

‫الخطوة التالية هي إنشاء تطبيق في مشروعك‪.‬‬


‫ال يمكنك إنشاء صفحة ويب باستخدام ‪ Django‬بدون تطبيق‪.‬‬

‫جانغو إنشاء التطبيق‬


‫ما هو التطبيق؟‬
‫التطبيق هو تطبيق ويب له معنى محدد في مشروعك‪ ،‬مثل الصفحة الرئيسية أو نموذج االتصال أو قاعدة بيانات األعضاء‪.‬‬
‫سنقوم في هذا البرنامج التعليمي بإنشاء تطبيق يسمح لنا بإدراج األعضاء وتسجيلهم في قاعدة بيانات‪.‬‬
‫لكن أوًال‪ ،‬لنقم بإنشاء تطبيق ‪ Django‬بسيط يعرض عبارة "‪."!Hello World‬‬

‫إنشاء التطبيق‬
‫سأقوم بتسمية تطبيقي بــ ‪..members‬‬

‫ابدأ باالنتقال إلى الموقع المحدد حيث تريد تخزين التطبيق‪ ،‬في حالتي مجلد ‪ ،my_tennis_club‬وقم بتشغيل األمر أدناه‪.‬‬

‫إذا كان الخادم ال يزال قيد التشغيل‪ ،‬ولم تتمكن من كتابة األوامر‪ ،‬فاضغط على [‪[ ]CTRL‬كسر]‪ ،‬أو [‪ ]C[ ]CTRL‬إليقاف الخادم ويجب أن‬
‫تعود إلى البيئة االفتراضية‪.‬‬

‫‪py manage.py startapp members‬‬


‫يقوم ‪ Django‬بإنشاء مجلد باسم ‪ members‬في مشروعي‪ ،‬بهذا المحتوى‪:‬‬

‫‪my_tennis_club‬‬
‫‪manage.py‬‬
‫‪my_tennis_club/‬‬
‫‪members/‬‬
‫‪migrations/‬‬
‫‪__init__.py‬‬
‫‪__init__.py‬‬
‫‪admin.py‬‬
‫‪apps.py‬‬
‫‪models.py‬‬
‫‪tests.py‬‬
‫‪views.py‬‬

‫هذه كلها ملفات ومجلدات ذات معنى محدد‪ .‬سوف تتعلم عن معظمهم الحًق ا في هذا البرنامج التعليمي‪.‬‬

‫أوًال‪ ،‬قم بإلقاء نظرة على الملف المسمى ‪.view.py‬‬

‫هذا هو المكان الذي نجمع فيه المعلومات التي نحتاجها إلرسال الرد المناسب‪.‬‬

‫سوف تتعلم المزيد عن طرق العرض في الفصل التالي‪.‬‬

‫العرض في دجانغو‬
‫‪Views‬‬
‫طرق عرض ‪ Django‬هي وظائف ‪ Python‬التي تتلقى طلبات ‪ http‬وتعيد استجابة ‪ ،http‬مثل مستندات ‪.HTML‬‬
‫صفحة الويب التي تستخدم ‪ Django‬مليئة بالمناظر ذات المهام والمهام المختلفة‪.‬‬
‫عادًة ما يتم وضع طرق العرض في ملف يسمى ‪ view.py‬الموجود في مجلد التطبيق الخاص بك‪.‬‬

‫يوجد ملف ‪ view.py‬في مجلد ‪ members‬الخاص بك والذي يبدو كالتالي‪:‬‬

‫‪my_tennis_club/members/views.py :‬‬

‫‪from django.shortcuts import render‬‬

‫‪# Create your views here.‬‬

‫ابحث عنه وافتحه‪ ،‬واستبدل المحتوى بهذا‪:‬‬

‫‪my_tennis_club/members/views.py :‬‬

‫‪from django.shortcuts import render‬‬

‫‪from django.http import HttpResponse‬‬


‫‪def members(request):‬‬

‫)"!‪return HttpResponse("Hello world‬‬

‫مالحظة‪ :‬ليس من الضروري أن يكون اسم العرض هو نفس اسم التطبيق‪.‬‬

‫أسميها ‪ members‬ألنني أعتقد أنها تتناسب بشكل جيد مع هذا السياق‪.‬‬

‫هذا مثال بسيط عن كيفية إرسال رد مرة أخرى إلى المتصفح‪.‬‬

‫ولكن كيف يمكننا تنفيذ الرأي؟ حسًن ا‪ ،‬يجب علينا استدعاء العرض عبر عنوان ‪.URL‬‬

‫سوف تتعلم عن عناوين ‪ URL‬في الفصل التالي‪.‬‬

‫عناوين ‪ URL‬لجانغو‬
‫عناوين ‪URL‬‬
‫أنشئ ملًفا باسم ‪ urls.py‬في نفس المجلد الذي يوجد به ملف ‪ ،views.py‬واكتب هذا الكود فيه‪:‬‬

‫‪my_tennis_club/members/urls.py :‬‬

‫‪from django.urls import path‬‬

‫‪from . import views‬‬

‫[ = ‪urlpatterns‬‬

‫‪path('members/', views.members, name='members'),‬‬

‫]‬

‫ملف ‪ urls.py‬الذي أنشأته للتو خاص بتطبيق ‪ .members‬يتعين علينا القيام ببعض التوجيه في الدليل الجذر ‪ my_tennis_club‬أيًض ا‪.‬‬
‫قد يبدو هذا معقًد ا‪ ،‬ولكن في الوقت الحالي‪ ،‬ما عليك سوى اتباع التعليمات أدناه‪.‬‬
، import ‫ في عبارة‬include ‫ افتح هذا الملف وأضف وحدة‬،my_tennis_club ‫ في المجلد‬urls.py ‫يوجد ملف يسمى‬
‫[] مع الوسيطات التي ستوجه المستخدمين الذين يأتون عبر‬urlpatterns ‫() في قائمة‬path ‫وأضف أيًض ا وظيفة‬
/127.0.0.1:8000
:‫ثم سيبدو ملفك هكذا‬

my_tennis_club/my_tennis_club/urls.py :

from django.contrib import admin

from django.urls import include, path

urlpatterns = [

path('', include('members.urls')),

path('admin/', admin.site.urls),

:‫ وقم بتنفيذ هذا األمر في موجه األوامر‬my_tennis_club/ ‫ فانتقل إلى المجلد‬،‫إذا كان الخادم ال يعمل‬

py Manage.py runserver

member/127.0.0.1:8000 ‫ اكتب في شريط العناوين‬،‫في نافذة المتصفح‬


‫قوالب جانغو ‪Templates‬‬

‫قوالب ‪Templates‬‬
‫في صفحة مقدمة ‪ ،Django‬تعلمنا أن النتيجة يجب أن تكون بتنسيق ‪ ،HTML‬ويجب إنشاؤها في قالب‪ ،‬فلنفعل ذلك‪.‬‬

‫قم بإنشاء مجلد ‪ templates‬داخل مجلد ‪ ، members‬وقم بإنشاء ملف ‪ HTML‬باسم ‪.myfirst.html‬‬

‫يجب أن يكون هيكل الملف مثل هذا‪:‬‬


‫‪my_tennis_club‬‬
‫‪manage.py‬‬
‫‪my_tennis_club/‬‬
members/
templates/
myfirst.html

:‫ وأدخل ما يلي‬HTML ‫افتح ملف‬

my_tennis_club/members/templates/myfirst.html :

<!DOCTYPE html>

<html>

<body>

<h1>Hello World!</h1>

<p>Welcome to my first Django project!</p>

</body>

</html>

‫تعديل العرض‬
:‫ بما يلي‬members ‫ واستبدل طريقة عرض‬views.py‫افتح ملف‬

my_tennis_club/members/views.py :

from django.http import HttpResponse

from django.template import loader

def members(request):

template = loader.get_template('myfirst.html')

return HttpResponse(template.render())
:‫تغيير االعدادات‬
.‫ أنه تم إنشاء تطبيق جديد‬Django ‫ علينا أن نخبر‬،"!Hello World" ‫لكي نتمكن من العمل مع أشياء أكثر تعقيًد ا من‬

.my_tennis_club ‫ الموجود في مجلد‬settings.py ‫يتم ذلك في ملف‬

:‫ هكذا‬members ‫[] وأضف تطبيق‬INSTALLED_APPS ‫ابحث عن قائمة‬

:my_tennis_club/my_tennis_club/settings.py

my_tennis_club/my_tennis_club/settings.py :

INSTALLED_APPS = [

'django.contrib.admin',

'django.contrib.auth',

'django.contrib.contenttypes',

'django.contrib.sessions',

'django.contrib.messages',

'django.contrib.staticfiles',

'members'

:‫ثم قم بتشغيل هذا األمر‬

py Manage.py Migrate

:‫والتي سوف تنتج هذا اإلخراج‬


Operations to perform:
Apply all migrations: admin, auth, contenttypes, sessions
Running migrations:
Applying contenttypes.0001_initial... OK
Applying auth.0001_initial... OK
Applying admin.0001_initial... OK
Applying admin.0002_logentry_remove_auto_add... OK
Applying admin.0003_logentry_add_action_flag_choices... OK
Applying contenttypes.0002_remove_content_type_name... OK
Applying auth.0002_alter_permission_name_max_length... OK
Applying auth.0003_alter_user_email_max_length... OK
Applying auth.0004_alter_user_username_opts... OK
Applying auth.0005_alter_user_last_login_null... OK
Applying auth.0006_require_contenttypes_0002... OK
Applying auth.0007_alter_validators_add_error_messages... OK
Applying auth.0008_alter_user_username_max_length... OK
Applying auth.0009_alter_user_last_name_max_length... OK
Applying auth.0010_alter_group_name_max_length... OK
Applying auth.0011_update_proxy_permissions... OK
Applying auth.0012_alter_user_first_name_max_length... OK
Applying sessions.0001_initial... OK

(myworld) C:\Users\Your Name\myworld\my_tennis_club>

:‫ وتنفيذ هذا األمر‬my_tennis_club/ ‫ابدأ تشغيل الخادم باالنتقال إلى المجلد‬

py Manage.py runserver

.‫في شريط العناوين‬ /members/127.0.0.1:8000 ‫ اكتب‬،‫في نافذة المتصفح‬

:‫يجب أن تبدو النتيجة كما يلي‬


‫نماذج جانغو ‪Django Models‬‬

‫نموذج جانغو هو جدول في قاعدة البيانات الخاصة بك‪.‬‬

‫نماذج جانغو‬
‫حتى اآلن في هذا البرنامج التعليمي‪ ،‬كان اإلخراج عبارة عن بيانات ثابتة من قوالب ‪ Python‬أو ‪.HTML‬‬

‫سنرى اآلن كيف يسمح لنا ‪ Django‬بالعمل مع البيانات‪ ،‬دون الحاجة إلى تغيير الملفات أو تحميلها أثناء العملية‪.‬‬
‫في ‪ ،Django‬يتم إنشاء البيانات في كائنات‪ ،‬تسمى ‪ ،Models‬وهي في الواقع جداول في قاعدة بيانات‪.‬‬

‫إنشاء جدول (نموذج) )‪Create Table (Model‬‬

‫إلنشاء نموذج‪ ،‬انتقل إلى ملف‪ models.py‬الموجود في المجلد ‪./members/‬‬

‫افتحه‪ ،‬وأضف جدول ‪ Member‬عن طريق إنشاء ‪ ،Member class‬ووصف حقول الجدول الموجودة فيه‪:‬‬

‫‪my_tennis_club/members/models.py :‬‬

‫‪from django.db import models‬‬

‫‪class Member(models.Model):‬‬

‫)‪firstname = models.CharField(max_length=255‬‬

‫)‪lastname = models.CharField(max_length=255‬‬

‫الحقل األول‪ firstname ،‬هو حقل نصي‪ ،‬وسيحتوي على االسم األول لألعضاء‪.‬‬

‫الحقل الثاني‪ lastname ،‬اسم العائلة‪ ،‬هو أيًض ا حقل نصي‪ ،‬باالسم األخير للعضو‪.‬‬

‫تم إعداد كل من االسم األول واسم العائلة بحيث يبلغ الحد األقصى ‪ 255‬حرًف ا‪.‬‬

‫قاعدة بيانات ‪SQLite‬‬


‫عندما أنشأنا مشروع ‪ ،Django‬حصلنا على قاعدة بيانات ‪ SQLite‬فارغة‪.‬‬

‫تم إنشاؤه في المجلد الجذر ‪ ،my_tennis_club‬وله اسم الملف ‪.db.sqlite3‬‬


.‫ كجداول في قاعدة البيانات هذه‬Django ‫ سيتم إنشاء جميع النماذج التي تم إنشاؤها في مشروع‬،‫افتراضًيا‬

Migrate ‫يهاجر‬
.‫ يجب علينا تشغيل أمر إلنشاء الجدول فعلًيا في قاعدة البيانات‬،models.py‫اآلن بعد أن وصفنا نموذًج ا في ملف‬

:‫ وقم بتشغيل هذا األمر‬/my_tennis_club/ ‫انتقل إلى المجلد‬

py manage.py makemigrations members


:‫مما سيؤدي إلى هذا اإلخراج‬

Migrations for 'members':


members\migrations\0001_initial.py
- Create model Member

(myworld) C:\Users\Your Name\myworld\my_tennis_club>


:/migrations/ ‫ بإنشاء ملف يصف التغييرات ويخزن الملف في المجلد‬Django ‫يقوم‬

my_tennis_club/members/migrations/0001_initial.py :

# Generated by Django 4.1.2 on 2022-10-27 11:14

from django.db import migrations, models

class Migration(migrations.Migration):

initial = True

dependencies = [

operations = [
migrations.CreateModel(

name='Member',

fields=[

('id', models.BigAutoField(auto_created=True,
primary_key=True, serialize=False, verbose_name='ID')),

('firstname', models.CharField(max_length=255)),

('lastname', models.CharField(max_length=255)),

],

),

،1 ‫ (يحصل السجل األول على القيمة‬auto increment number ‫ وهو رقم زيادة تلقائي‬،‫ لجداولك‬id ‫ ُيدرج‬Django ‫الحظ أن‬
‫ ويمكنك تجاوزه عن طريق وصف المعرف الخاص بــك مجــال‬،Django ‫ وهذا هو السلوك االفتراضي لـ‬،)‫ وما إلى ذلك‬2 ‫والسجل الثاني‬
. id

‫ بناًء على محتوى الملف الجديــد في‬،SQL ‫ بإنشاء وتنفيذ عبارة‬Django ‫ ثم سيقوم‬،‫ سيتعين عليك تشغيل أمر آخر‬،‫لم يتم إنشاء الجدول بعد‬
/migrations/ ‫المجلد‬

:migrate ‫قم بتشغيل أمر الترحيل‬

py manage.py migrate
:‫مما سيؤدي إلى هذا اإلخراج‬

Operations to perform:
Apply all migrations: admin, auth, contenttypes, members, sessions
Running migrations:
Applying members.0001_initial... OK

(myworld) C:\Users\Your Name\myworld\my_tennis_club>


!‫اآلن لديك جدول األعضاء في قاعدة البيانات الخاصة بك‬
‫‪SQL (View‬‬ ‫عرض )‪SQL‬‬
‫كمالحظة جانبية‪ :‬يمكنك عرض عبارة ‪ SQL‬الـتي تم تنفيـذها من عمليـة الترحيـل أعاله‪ .‬كــل مــا عليـك فعلـه هـو تشــغيل هـذا األمــر بـرقم‬
‫الترحيل‪:‬‬

‫‪py manage.py sqlmigrate members 0001‬‬


‫مما سيؤدي إلى هذا اإلخراج‪:‬‬

‫;‪BEGIN‬‬
‫‪--‬‬
‫‪-- Create model Member‬‬
‫‪--‬‬
‫‪CREATE TABLE "members_member" ("id" integer NOT NULL PRIMARY KEY‬‬
‫)‪AUTOINCREMENT, "firstname" varchar(255) NOT NULL, "lastname" varchar(255‬‬
‫;‪NOT NULL); COMMIT‬‬

‫جانغو إدراج البيانات‬


‫إضافة السجالت‬
‫جدول األعضاء الذي تم إنشاؤه في الفصل السابق فارغ‪.‬‬

‫سوف نستخدم مترجم بايثون (‪ )Python Shell‬إلضافة بعض األعضاء إليه‪.‬‬

‫لفتح غالف بايثون‪ ،‬اكتب هذا األمر‪:‬‬

‫‪py Manage.py shell‬‬

‫اآلن نحن في الصدفة‪ ،‬والنتيجة يجب أن تكون مثل هذا‪:‬‬

‫‪Python 3.9.2 (tags/v3.9.2:1a79785, Feb 19 2021, 13:44:55) [MSC v.1928 64‬‬


‫‪bit‬‬ ‫])‪(AMD64‬‬ ‫‪on‬‬ ‫‪win32‬‬
‫‪Type "help", "copyright", "credits" or "license" for more information.‬‬
‫)‪(InteractiveConsole‬‬
‫>>>‬
‫في األسفل‪ ،‬بعد الثالثة >>> اكتب ما يلي‪:‬‬
‫‪>>> from members.models import Member‬‬
‫اضغط على [أدخل] واكتب هذا إللقاء نظرة على جدول األعضاء الفارغ‪:‬‬

‫)(‪>>> Member.objects.all‬‬

‫من المفترض أن يمنحك هذا كائن ‪ QuerySet‬فارًغ ا‪ ،‬مثل هذا‪:‬‬

‫>][ ‪<QuerySet‬‬
‫‪ QuerySet‬عبارة عن مجموعة من البيانات من قاعدة بيانات‪.‬‬

‫اقرأ المزيد حول ‪ QuerySets‬في فصل ‪.Django QuerySet‬‬

‫أضف سجًال إلى الجدول عن طريق تنفيذ هذين السطرين‪:‬‬

‫)'‪>>> member = Member(firstname='Emil', lastname='Refsnes‬‬


‫)(‪>>> member.save‬‬

‫قم بتنفيذ هذا األمر لمعرفة ما إذا كان جدول األعضاء يحتوي على عضو‪:‬‬

‫)(‪>>> Member.objects.all().values‬‬
‫نأمل أن تكون النتيجة هكذا‪:‬‬

‫>]}'‪<QuerySet [{'id': 1, 'firstname': 'Emil', 'lastname': 'Refsnes‬‬


‫إضافة سجالت متعددة‬

‫يمكنك إضافة سجالت متعددة عن طريق إنشاء قائمة بكائنات األعضاء‪ ،‬وتنفيذ ‪ )(save.‬على كل إدخال‪:‬‬

‫>>> ‪ = member1‬عضو (االسم األول='توبياس'‪ ،‬االسم األخير='‪)'Refsnes‬‬


‫>>> ‪ = member2‬عضو (االسم األول = '‪ ،'Linus‬االسم األخير = '‪)'Refsnes‬‬

‫>>> ‪ = member3‬عضو (االسم األول='‪ ,'Lene‬االسم األخير='‪)'Refsnes‬‬

‫>>> ‪ = member4‬عضو (االسم األول='قديم'‪ ،‬االسم األخير='‪)'Refsnes‬‬

‫>>> ‪ = member5‬عضو (االسم األول='جين'‪ ،‬االسم األخير='دوي')‬

‫>>> ‪[ = member_list‬عضو‪ ،1‬عضو‪ ،2‬عضو‪ ،3‬عضو‪ ،4‬عضو‪]5‬‬

‫>>> لـ ‪ x‬في ‪:member_list‬‬

‫>>> ‪)(x.save‬‬

‫يوجد اآلن ‪ 6‬أعضاء في جدول األعضاء‪:‬‬

‫>>> ‪)(Member.objects.all().values‬‬

‫<}'‪,QuerySet [{'id': 1, 'firstname': 'Emil', 'lastname': 'Refsnes‬‬

‫{'‪،}'id': 2، 'firstname': 'Tobias'، 'lastname': 'Refsnes‬‬

‫{'المعرف'‪' ،3 :‬االسم األول'‪' :‬لينوس'‪' ،‬اسم العائلة'‪،}'Refsnes' :‬‬

‫{'المعرف'‪' ،4 :‬االسم األول'‪' :‬ليني'‪' ،‬اسم العائلة'‪،}'Refsnes' :‬‬

‫{'المعرف'‪' ،5 :‬االسم األول'‪' :‬قديم'‪' ،‬اسم العائلة'‪،}'Refsnes' :‬‬

‫{'المعرف'‪' ،6 :‬االسم األول'‪' :‬جين'‪' ،‬اسم العائلة'‪' :‬دوي'}]>‬

You might also like