مرحبًا بك في الدليل الشامل حول تطوير الويب باستخدام Django. Django هو أحد أقوى وأشهر أطر العمل لتطوير الويب التي تتيح للمطورين بناء تطبيقات ويب آمنة وقابلة للتوسع وسهلة الصيانة باستخدام Python. سواء كنت تبدأ رحلتك في تطوير الويب أو كنت محترفًا متمرسًا، يوفر Django الأدوات والميزات التي تحتاجها للنجاح في مشهد الويب الحديث.
مقدمة في Django
تم تصميم Django مع التركيز على التطوير السريع والبساطة. إنه إطار عمل "مزوّد بكل شيء"، مما يعني أنه يأتي مع العديد من الميزات المدمجة، لذا لا تحتاج إلى الاعتماد بشكل كبير على المكتبات الخارجية لتشغيل مشروعك. من ORM القوي (الترابط بين الكائنات والعلاقات) إلى واجهة المصادقة والإدارة المدمجة، يبسط Django تطوير الويب بشكل كبير.
لماذا تختار Django لتطوير الويب؟
- التطوير السريع: فلسفة Django تركز على القدرة على تطوير التطبيقات بسرعة دون التضحية بجودة الكود أو مبادئ التصميم.
- الأمان: يوفر Django حماية مدمجة ضد الثغرات الشائعة في الويب مثل حقن SQL وXSS وCSRF وclickjacking.
- قابلية التوسع: يمكن لـ Django التوسع بسهولة من المشاريع الشخصية الصغيرة إلى التطبيقات الكبيرة على نطاق المؤسسات.
- دعم المجتمع: لدى Django مجتمع كبير ونشط، مما يضمن أنك ستجد مكتبات وتوثيق ومساعدة مجتمعية بسهولة.
- واجهة الإدارة المدمجة: تعد واجهة الإدارة في Django أداة قوية تساعد المطورين والمديرين في إدارة البيانات والتطبيقات بأقل قدر من الإعداد.
إعداد Django: دليل خطوة بخطوة
بدء استخدام Django بسيط. إليك كيفية إعداد أول مشروع Django لك من البداية:
1. تثبيت Django
لبدء استخدام Django، ستحتاج إلى تثبيته على جهازك. افتح وحدة التحكم أو موجه الأوامر الخاص بك وقم بتشغيل الأمر التالي:
pip install django
يقوم هذا الأمر بتثبيت Django عبر مدير الحزم الخاص بـ Python، pip.
2. إنشاء مشروع Django جديد
بمجرد تثبيت Django، يمكنك إنشاء مشروع Django جديد عن طريق تشغيل الأمر التالي:
django-admin startproject myproject
ينشئ هذا الأمر مجلدًا جديدًا، "myproject"، يحتوي على هيكل الملفات الأساسي لمشروع Django. يتضمن الملفات الرئيسية مثل settings.py
وurls.py
وأخرى.
3. تشغيل خادم تطوير Django
بعد ذلك، انتقل إلى دليل مشروعك الجديد وقم بتشغيل خادم التطوير:
python manage.py runserver
الآن، إذا فتحت متصفحك وانتقلت إلى http://127.0.0.1:8000/، سترى صفحة الترحيب الافتراضية لـ Django. هذا يؤكد أن مشروعك تم إعداده بشكل صحيح وأن Django يعمل.
هيكل مشروع Django
عندما تنشئ مشروع Django جديد، يتم إنشاء العديد من الملفات والمجلدات المهمة:
4. فهم الملفات الرئيسية في Django
- settings.py: يحتوي هذا الملف على جميع إعدادات وتكوينات مشروعك، بما في ذلك إعداد قاعدة البيانات، والمضيفين المسموح بهم، والتطبيقات المثبتة، والوسائط، والمزيد.
- urls.py: يتعامل هذا الملف مع توجيه URL، حيث يربط بين URLs وviews.
- wsgi.py: يعد هذا الملف نقطة الدخول لخوادم الويب المتوافقة مع WSGI لتقديم مشروعك في بيئة الإنتاج.
5. بنية MVT في Django
يتبع Django بنية Model-View-Template (MVT)، وهي نسخة طفيفة من نمط MVC التقليدي (Model-View-Controller):
- النموذج: يمثل طبقة البيانات. تقوم النماذج بتحديد هيكل قاعدة بياناتك وكيفية تخزين واسترجاع البيانات.
- العرض: يتعامل مع المنطق التجاري ويتفاعل مع النماذج. تعرض العروض الطلبات الواردة وتعيد الاستجابة المناسبة، وغالبًا ما تعرض القوالب.
- القالب: يمثل طبقة العرض. تتحمل القوالب مسؤولية عرض محتوى HTML بشكل ديناميكي، مع دمج البيانات المرسلة من العروض.
إنشاء أول تطبيق Django لك
في Django، يتكون المشروع من عدة تطبيقات. كل تطبيق هو وحدة مستقلة تتعامل مع جانب محدد من وظائف مشروعك. على سبيل المثال، قد يكون لديك تطبيقات منفصلة للتعامل مع مصادقة المستخدمين، ومحتوى المدونات، أو وظائف التجارة الإلكترونية.
6. إنشاء تطبيق جديد
لإنشاء تطبيق جديد ضمن مشروعك، قم بتشغيل الأمر التالي:
python manage.py startapp myapp
ينشئ هذا الأمر بنية دليل جديدة لتطبيقك، بما في ذلك ملفات مثل models.py
وviews.py
وadmin.py
.
7. تعريف النماذج
ملف models.py
هو المكان الذي تحدد فيه هيكل قاعدة بياناتك. يقوم ORM الخاص بـ Django بربط فئات Python بجداول قاعدة البيانات، مما يتيح لك التفاعل مع قاعدة البيانات باستخدام كود Python بدلاً من كتابة استعلامات SQL مباشرة. إليك مثال لنموذج بسيط لمشاركة مدونة:
from django.db import models
class BlogPost(models.Model):
title = models.CharField(max_length=200)
content = models.TextField()
pub_date = models.DateTimeField('date published')
8. تسجيل النماذج في واجهة الإدارة
يأتي Django مع واجهة إدارة مدمجة تتيح لك إدارة بيانات تطبيقك. لجعل نماذجك متاحة في واجهة الإدارة، تحتاج إلى تسجيلها في ملف admin.py
:
from django.contrib import admin
from .models import BlogPost
admin.site.register(BlogPost)
بعد تسجيل نماذجك، يمكنك إدارتها في لوحة إدارة Django عن طريق الانتقال إلى http://127.0.0.1:8000/admin/ وتسجيل الدخول.
9. توجيه URL
يسمح نظام توجيه URL في Django بربط URLs بعروض محددة. على سبيل المثال، قد ترغب في أن تعرض URL /blog/
قائمة بمشاركات المدونة. يتم ذلك في ملف urls.py
في تطبيقك. إليك مثال:
from django.urls import path
from . import views
urlpatterns = [
path('', views.index, name='index'),
path('post//', views.post_detail, name='post_detail'),
]
العمل مع العروض في Django
تتحمل العروض مسؤولية معالجة طلبات HTTP الواردة وإعادة الاستجابات. تتفاعل مع نماذجك لاسترجاع البيانات وتمريرها إلى القالب للعرض.
10. إنشاء عرض لعرض مشاركات المدونة
إليك مثال على عرض يسترجع جميع مشاركات المدونة من قاعدة البيانات ويعرضها على صفحة:
from django.shortcuts import render
from .models import BlogPost
def index(request):
posts = BlogPost.objects.all()
return render(request, 'index.html', {'posts': posts})
يستعلم هذا العرض قاعدة البيانات للحصول على جميع مشاركات المدونة ويمررها إلى قالب index.html
، الذي يقوم بعرض HTML.
قوالب Django: عرض HTML
تتحمل القوالب مسؤولية عرض HTML في Django. تتيح لك تضمين كود يشبه Python في ملفات HTML الخاصة بك لإنشاء محتوى ديناميكي بناءً على البيانات المرسلة من العرض.
11. إنشاء قالب لمشاركات المدونة
ضمن تطبيقك، أنشئ دليلًا جديدًا يسمى templates
وداخلها، أنشئ ملفًا باسم index.html
. إليك قالب بسيط يعرض قائمة بمشاركات المدونة:
مشاركات المدونة
- {% for post in posts %}
- {{ post.title }} - {{ post.pub_date }} {% endfor %}
العمل مع النماذج في Django
النماذج هي جزء أساسي من تطوير الويب. تتيح للمستخدمين إرسال البيانات إلى موقعك. يوفر Django نظامًا قويًا لمعالجة النماذج مما يجعل إنشاء ومعالجة النماذج أمرًا بسيطًا.
12. إنشاء نموذج لإرسال مشاركات المدونة
لإنشاء نموذج، يمكنك استخدام وحدة forms
الخاصة بـ Django. إليك نموذجًا مثالياً لإرسال مشاركة جديدة في المدونة:
from django import forms
from .models import BlogPost
class BlogPostForm(forms.ModelForm):
class Meta:
model = BlogPost
fields = ['title', 'content']
13. التعامل مع تقديم النماذج
في عرضك، تحتاج إلى التعامل مع تقديم النموذج، والتحقق من صحة البيانات، وحفظها في قاعدة البيانات. إليك مثالاً على عرض يتعامل مع تقديم مشاركة مدونة:
from django.shortcuts import render, redirect
from .forms import BlogPostForm
def new_post(request):
if request.method == "POST":
form = BlogPostForm(request.POST)
if form.is_valid():
form.save()
return redirect('index')
else:
form = BlogPostForm()
return render(request, 'new_post.html', {'form': form})
المصادقة وإدارة المستخدمين في Django
يأتي Django مع نظام مصادقة قوي يتعامل مع تسجيل المستخدمين، وتسجيل الدخول، وتسجيل الخروج، وإدارة كلمات المرور. كما يدعم أيضًا أذونات المستخدمين والمجموعات للتحكم في الوصول.
14. إعداد مصادقة المستخدمين
لتفعيل المصادقة في Django، تأكد من أن django.contrib.auth
مدرجة في INSTALLED_APPS
. يوفر Django أيضًا عروضًا مدمجة للتعامل مع تسجيل الدخول وتسجيل الخروج، والتي يمكنك إضافتها بسهولة إلى ملف urls.py
الخاص بك:
from django.urls import path
from django.contrib.auth import views as auth_views
urlpatterns = [
path('login/', auth_views.LoginView.as_view(), name='login'),
path('logout/', auth_views.LogoutView.as_view(), name='logout'),
]
15. تقييد الوصول إلى العروض
لتقييد بعض العروض للمستخدمين المصادق عليهم فقط، استخدم الزخرفة @login_required
. إليك كيفية تطبيقها على عرض:
from django.contrib.auth.decorators import login_required
@login_required
def dashboard(request):
return render(request, 'dashboard.html')
نشر تطبيق Django الخاص بك
بمجرد أن تكون قد طورت تطبيق Django الخاص بك، الخطوة التالية هي نشره في بيئة الإنتاج. تدعم العديد من المنصات نشر تطبيقات Django، بما في ذلك Heroku وDigitalOcean وAWS.
16. نشر Django على Heroku
Heroku هو أحد أسهل المنصات لنشر تطبيقات Django. إليك نظرة عامة على الخطوات:
- تثبيت CLI الخاص بـ Heroku.
- تهيئة مستودع Git في دليل مشروعك.
- إنشاء تطبيق Heroku جديد عن طريق تشغيل
heroku create
. - ادفع كودك إلى Heroku باستخدام
git push heroku master
. - تهيئة متغيرات البيئة مثل
ALLOWED_HOSTS
وDATABASE_URL
.
17. توسيع تطبيقات Django
مع نمو تطبيقك، قد تحتاج إلى توسيعه للتعامل مع الزيادة في حركة المرور. تم تصميم Django ليتوسع بشكل جيد، ولكنك ستحتاج إلى تنفيذ التخزين المؤقت، وتحميل التوازن، وتحسين قاعدة البيانات لضمان تشغيل تطبيقك بسلاسة تحت الأحمال الثقيلة.
18. التخزين المؤقت في Django
يمكن أن يحسن التخزين المؤقت بشكل كبير أداء تطبيق Django الخاص بك عن طريق تخزين نتائج استعلامات قاعدة البيانات المكلفة وتقديمها بشكل أسرع. يدعم Django خلفيات تخزين مؤقت مختلفة، بما في ذلك Memcached وRedis. لتمكين التخزين المؤقت، أضف الإعدادات التالية إلى settings.py
:
CACHES = {
'default': {
'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache',
'LOCATION': '127.0.0.1:11211',
}
}
ميزات Django المتقدمة
19. Django Rest Framework (DRF)
إذا كنت تبني واجهة برمجة تطبيقات (API)، فإن Django Rest Framework (DRF) هو أداة أساسية. يوفر مجموعة أدوات قوية لبناء واجهات برمجة التطبيقات RESTful، بما في ذلك التسلسل، والمصادقة، وإدارة الأذونات.
20. نماذج المستخدمين المخصصة
يسمح لك Django بإنشاء نماذج مستخدمين مخصصة إذا كنت بحاجة إلى توسيع نموذج المستخدم الافتراضي مع حقول أو وظائف إضافية. يمكنك تعريف نموذج مستخدم مخصص عن طريق التوريث من AbstractUser
أو AbstractBaseUser
.
الخاتمة
تطوير تطبيقات الويب باستخدام Django هو تجربة غنية تجمع بين البساطة والمرونة والقوة. تسمح مجموعة ميزات Django الواسعة ببناء أي شيء من مدونة بسيطة إلى منصة تجارة إلكترونية متكاملة بسهولة. من خلال الاستفادة من الأدوات المدمجة في Django والالتزام بأفضل الممارسات، يمكنك إنشاء تطبيقات ويب آمنة وقابلة للتوسع وسهلة الصيانة.
بينما تواصل رحلتك مع Django، استمر في تجربة ميزات جديدة، ودمج المكتبات الخارجية، وتحسين الكود الخاص بك للأداء. مجتمع Django هو مورد رائع للتعلم والتعاون، لذا لا تتردد في طلب المساعدة والمساهمة بمعرفتك للآخرين.
تمنياتنا لك برمجة ممتعة مع Django!
موارد مهمة لتطوير الويب باستخدام Django
- التوثيق الرسمي لـ Django - التوثيق الرسمي هو أفضل مكان لبدء تعلم Django واستكشاف ميزاته.
- دورة Django Girls - دورة تعليمية مناسبة للمبتدئين تأخذك خطوة بخطوة لبناء أول تطبيق Django لك.
- البدء مع Django - دليل لمساعدتك على البدء مع Django بسرعة وكفاءة.
- دورات Django من Real Python - دورات شاملة تغطي مواضيع Django من الأساسيات إلى الميزات المتقدمة.
- دورة مطور Full Stack مع Django (Udemy) - دورة مدفوعة على الإنترنت تعلم Django وPython لبناء تطبيقات الويب الكاملة.
- دورات Django لكوري شافر - دروس فيديو عالية الجودة حول Django، تغطي مجموعة واسعة من المواضيع.
- الموقع الرسمي لـ Django - الموقع الرسمي لـ Django مع مزيد من الموارد وروابط المجتمع والمعلومات.
- مجتمع Django - تواصل مع مطورين آخرين في Django، انضم إلى النقاشات، وساهم في الإطار.
- مجتمع Django Rest Framework - منصة مخصصة للمطورين الذين يعملون مع Django Rest Framework.
- Django على Stack Overflow - احصل على مساعدة من المجتمع عند مواجهة المشكلات أو تبحث عن نصائح.