Professional Documents
Culture Documents
جذومن Models
جذومن Models
Djangoهو إطار عمل Pythonالذي يسهل إنشاء مواقع الويب باستخدام .Python
يعتني Djangoباألشياء الصعبة حتى تتمكن من التركيز على بناء تطبيقات الويب الخاصة بك.
يؤكد Djangoعلى إمكانية إعادة استخدام المكونات ،والتي يشار إليها أيًضا باسم ( DRYال تكرر نفسك) ،ويأتي مزوًد ا بميزات جاهزة
لالستخدام مثل نظام تسجيل الدخول ،واتصال قاعدة البيانات وعمليات ( CRUDإنشاء قراءة وتحديث وحذف).
يعد Djangoمفيًد ا بشكل خاص لمواقع الويب التي تعتمد على قواعد البيانات.
النموذج -MODELالبيانات التي تريد تقديمها ،وعادًة ما تكون بيانات من قاعدة بيانات.
عرض -Viewمعالج الطلب الذي يقوم بإرجاع القالب والمحتوى ذي الصلة -بناًء على الطلب المقدم من المستخدم.
القالب - Templateملف نصي (مثل ملف )HTMLيحتوي على تخطيط صفحة الويب ،مع منطق حول كيفية عرض البيانات.
نموذج MODELS
يوفر النموذج بيانات من قاعدة البيانات.
في ،Djangoيتم تسليم البيانات كرسم خرائط عالئقي للكائنات ( ،)ORMوهي تقنية مصممة لتسهيل العمل مع قواعد البيانات.
الطريقة األكثر شيوًع ا الستخراج البيانات من قاعدة البيانات هي .SQLإحدى مشكالت SQLهي أنه يجب أن يكون لديك فهم جيد لبنية
قاعدة البيانات حتى تتمكن من العمل معها.
يسهل ،Djangoمع ،ORMالتواصل مع قاعدة البيانات ،دون الحاجة إلى كتابة عبارات SQLمعقدة.
القالب Template
القالب هو ملف تصف فيه كيفية تمثيل النتيجة.
غالًبا ما تكون القوالب عبارة عن ملفات بتنسيق ،html.مع كود HTMLالذي يصف تخطيط صفحة الويب ،ولكن يمكن أيًض ا أن تكون
بتنسيقات ملفات أخرى لتقديم نتائج أخرى ،ولكننا سنركز على ملفات .html.
يستخدم Djangoلغة HTMLالقياسية لوصف التخطيط ،ولكنه يستخدم عالمات Djangoإلضافة المنطق:
><h1>My Homepage</h1
عناوين URL
عندما تقوم بتثبيت Djangoوإنشاء أول تطبيق ويب ،Djangoويطلب المتصفح عنوان ،URLفهذا ما يحدث بشكل أساسي:
يتلقى Djangoعنوان ،URLويتحقق من ملف ،urls.pyويستدعي العرض الذي يطابق عنوان .URL
يقوم العرض بعد ذلك بإرسال البيانات إلى قالب محدد في مجلد templates
يحتوي القالب على عالمات HTMLو ،Djangoومع البيانات يقوم بإرجاع محتوى HTMLالنهائي مرة أخرى إلى المتصفح.
يمكن لـ Djangoأن يفعل أكثر من ذلك بكثير ،ولكن هذا هو ما ستتعلمه في هذا البرنامج التعليمي ،وهي الخطوات األساسية في تطبيق
ويب بسيط تم إنشاؤه باستخدام .Django
تاريخ جانغو
تم اختراع Djangoبواسطة Lawrence Journal-Worldفي عام ،2003لتلبية المواعيد النهائية القصيرة في الصحيفة وفي نفس
الوقت تلبية متطلبات مطوري الويب ذوي الخبرة.
بداية جانغو
لتثبيت ،Djangoيجب أن يكون لديك Pythonمثبًت ا ومدير حزم مثل .PIP
python --version
إذا تم تثبيت بايثون ،فستحصل على نتيجة برقم اإلصدار ،مثل هذا
Python 3.9.2
إذا وجدت أنه ليس لديك لغة Pythonمثبتة على جهاز الكمبيوتر الخاص بك ،فيمكنك تنزيلها مجاًن ا من الموقع التالي:
/https://www.python.org
pip
لتثبيت ،Djangoيجب عليك استخدام مدير الحزم مثل ،PIPالمضمن في Pythonمن اإلصدار .3.4
للتحقق من تثبيت PIPعلى نظامك ،قم بتشغيل هذا األمر في موجه األوامر:
pip –version
إذا تم تثبيت ،PIPفستحصل على نتيجة برقم اإلصدار.
بالنسبة لي ،على جهاز يعمل بنظام ،Windowsتبدو النتيجة كما يلي:
إذا لم يكن لديك PIPمثبًت ا ،فيمكنك تنزيله وتثبيته من هذه الصفحة/https://pypi.org/project/pip :
بيئة افتراضية
يقترح أن تكون هناك بيئة افتراضية مخصصة لكل مشروع جانغو ،وفي الفصل التالي ستتعلم كيفية إنشاء بيئة افتراضية ،ومن ثم تثبيت
جانغو فيها
اسم البيئة االفتراضية هو اختيارك ،في هذا البرنامج التعليمي سوف نسميها .myworld
اكتب ما يلي في موجه األوامر ،وتذكر االنتقال إلى المكان الذي تريد إنشاء مشروعك فيه:
Windows:
Unix/MacOS:
سيؤدي هذا إلى إعداد بيئة افتراضية ،وإنشاء مجلد باسم " "myworldيحتوي على مجلدات فرعية وملفات ،مثل هذا:
myworld
Include
Lib
Scripts
pyvenv.cfg
myworld\Scripts\activate.bat
Unix/MacOS:
source myworld/bin/activate
Windows:
Unix/MacOS:
مالحظة :يجب عليك تنشيط البيئة االفتراضية في كل مرة تفتح فيها موجه األوامر للعمل على مشروعك.
تثبيت جانغو
في الفصل التالي ،ستتعلم أخيًر ا كيفية تثبيت !Django
تثبيت جانغو
اآلن ،بعد أن أنشأنا بيئة افتراضية ،نحن جاهزون لتثبيت .Django
Windows:
(myworld) C:\Users\Your Name>py -m pip install Django
Unix/MacOS:
:)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
4.1.2
ماذا بعد؟
أنت اآلن جاهز إلنشاء مشروع Djangoفي بيئة افتراضية على جهاز الكمبيوتر الخاص بك.
في الفصول التالية من هذا البرنامج التعليمي ،سنقوم بإنشاء مشروع Djangoوإلقاء نظرة على الميزات المتنوعة لـ Djangoونأمل أن
نجعلك مطور .Django
my_tennis_club
manage.py
my_tennis_club/
__init__.py
asgi.py
settings.py
urls.py
wsgi.py
من المهم، ولكن في الوقت الحالي، ستتعرف على بعضها الحًق ا في هذا البرنامج التعليمي،هذه كلها ملفات ومجلدات ذات معنى محدد
. هي- وأنه يمكنك البدء في إنشاء التطبيقات فيه هو،معرفة أن هذا هو موقع مشروعك
py manage.py runserver
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.
النتائج:
ماذا بعد؟
لدينا مشروع جانغو!
إنشاء التطبيق
سأقوم بتسمية تطبيقي بــ ..members
ابدأ باالنتقال إلى الموقع المحدد حيث تريد تخزين التطبيق ،في حالتي مجلد ،my_tennis_clubوقم بتشغيل األمر أدناه.
إذا كان الخادم ال يزال قيد التشغيل ،ولم تتمكن من كتابة األوامر ،فاضغط على [[ ]CTRLكسر] ،أو [ ]C[ ]CTRLإليقاف الخادم ويجب أن
تعود إلى البيئة االفتراضية.
my_tennis_club
manage.py
my_tennis_club/
members/
migrations/
__init__.py
__init__.py
admin.py
apps.py
models.py
tests.py
views.py
هذه كلها ملفات ومجلدات ذات معنى محدد .سوف تتعلم عن معظمهم الحًق ا في هذا البرنامج التعليمي.
هذا هو المكان الذي نجمع فيه المعلومات التي نحتاجها إلرسال الرد المناسب.
العرض في دجانغو
Views
طرق عرض Djangoهي وظائف Pythonالتي تتلقى طلبات httpوتعيد استجابة ،httpمثل مستندات .HTML
صفحة الويب التي تستخدم Djangoمليئة بالمناظر ذات المهام والمهام المختلفة.
عادًة ما يتم وضع طرق العرض في ملف يسمى view.pyالموجود في مجلد التطبيق الخاص بك.
my_tennis_club/members/views.py :
my_tennis_club/members/views.py :
ولكن كيف يمكننا تنفيذ الرأي؟ حسًن ا ،يجب علينا استدعاء العرض عبر عنوان .URL
عناوين URLلجانغو
عناوين URL
أنشئ ملًفا باسم urls.pyفي نفس المجلد الذي يوجد به ملف ،views.pyواكتب هذا الكود فيه:
my_tennis_club/members/urls.py :
[ = urlpatterns
]
ملف 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 :
urlpatterns = [
path('', include('members.urls')),
path('admin/', admin.site.urls),
: وقم بتنفيذ هذا األمر في موجه األوامرmy_tennis_club/ فانتقل إلى المجلد،إذا كان الخادم ال يعمل
py Manage.py runserver
قوالب Templates
في صفحة مقدمة ،Djangoتعلمنا أن النتيجة يجب أن تكون بتنسيق ،HTMLويجب إنشاؤها في قالب ،فلنفعل ذلك.
قم بإنشاء مجلد templatesداخل مجلد ، membersوقم بإنشاء ملف HTMLباسم .myfirst.html
my_tennis_club/members/templates/myfirst.html :
<!DOCTYPE html>
<html>
<body>
<h1>Hello World!</h1>
</body>
</html>
تعديل العرض
: بما يليmembers واستبدل طريقة عرضviews.pyافتح ملف
my_tennis_club/members/views.py :
def members(request):
template = loader.get_template('myfirst.html')
return HttpResponse(template.render())
:تغيير االعدادات
. أنه تم إنشاء تطبيق جديدDjango علينا أن نخبر،"!Hello World" لكي نتمكن من العمل مع أشياء أكثر تعقيًد ا من
: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
py Manage.py runserver
نماذج جانغو
حتى اآلن في هذا البرنامج التعليمي ،كان اإلخراج عبارة عن بيانات ثابتة من قوالب Pythonأو .HTML
سنرى اآلن كيف يسمح لنا Djangoبالعمل مع البيانات ،دون الحاجة إلى تغيير الملفات أو تحميلها أثناء العملية.
في ،Djangoيتم إنشاء البيانات في كائنات ،تسمى ،Modelsوهي في الواقع جداول في قاعدة بيانات.
افتحه ،وأضف جدول Memberعن طريق إنشاء ،Member classووصف حقول الجدول الموجودة فيه:
my_tennis_club/members/models.py :
class Member(models.Model):
)firstname = models.CharField(max_length=255
)lastname = models.CharField(max_length=255
الحقل األول firstname ،هو حقل نصي ،وسيحتوي على االسم األول لألعضاء.
الحقل الثاني lastname ،اسم العائلة ،هو أيًض ا حقل نصي ،باالسم األخير للعضو.
تم إعداد كل من االسم األول واسم العائلة بحيث يبلغ الحد األقصى 255حرًف ا.
Migrate يهاجر
. يجب علينا تشغيل أمر إلنشاء الجدول فعلًيا في قاعدة البيانات،models.pyاآلن بعد أن وصفنا نموذًج ا في ملف
my_tennis_club/members/migrations/0001_initial.py :
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/ المجلد
py manage.py migrate
:مما سيؤدي إلى هذا اإلخراج
Operations to perform:
Apply all migrations: admin, auth, contenttypes, members, sessions
Running migrations:
Applying members.0001_initial... OK
;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
)(>>> Member.objects.all
>][ <QuerySet
QuerySetعبارة عن مجموعة من البيانات من قاعدة بيانات.
قم بتنفيذ هذا األمر لمعرفة ما إذا كان جدول األعضاء يحتوي على عضو:
)(>>> Member.objects.all().values
نأمل أن تكون النتيجة هكذا:
يمكنك إضافة سجالت متعددة عن طريق إنشاء قائمة بكائنات األعضاء ،وتنفيذ )(save.على كل إدخال:
>>> )(x.save
>>> )(Member.objects.all().values