إنشاء مشروع جانغو – الطريق الصحيح

جانغو هو إطار ويب يحتوي على الكثير من الملفات والمجلدات بداخله. و يمكن أن يساعد التنظيم المناسب للمشروع في الحفاظ على المشروع في صيغة (لا تكرر نفسك).

تنظيم المشروع أمر لا بد منه لكل مطور. لأنه يساعدهم هذا في العثور على المسار الصحيح للملفات والمجلدات. و طبعا هناك طرق عديدة لتنظيم الدليل والملفات الخاصة بمشروع Django.

هيكل جانغو

الطريقة التي أحب بها تنظيم مشروع جانغو الخاص بي هي – الاحتفاظ بجميع تطبيقات جانغو في مجلد التطبيقات، والملفات الثابتة (البرامج النصية، وjs، وCSS) في المجلد الثابت، وملفات HTML في مجلد القوالب، والصور ومحتوى الوسائط في مجلد الوسائط.

django_project
├── apps
│   └── app_1
│       ├── admin.py
│       ├── apps.py
│       ├── __init__.py
│       ├── migrations
│       │   └── __init__.py
│       ├── models.py│       ├── tests.py
│       └── views.py
├── /django_project(core)
│   ├── __init__.py
│   ├── __pycache__
│   │   ├── __init__.cpython-35.pyc
│   │   └── settings.cpython-35.pyc
│   ├── settings.py
│   ├── urls.py
│   └── wsgi.py
├── manage.py
├── media
├── static
└── templates

إنشاء مشروع جانغو

قم بإنشاء مجلد تريد الاحتفاظ بمشروعك فيه. وافتح الدليل.

mkdir my_project
cd my_project/

ضمن هذا الدليل، قم بإنشاء بيئة افتراضية لمشروع Django الخاص بك وقم بتنشيط تلك البيئة الافتراضية.

python3 -m venv env
source env/bin/activate

حان الوقت الآن لتثبيت Django في بيئتك الافتراضية.

pip3 install django

الآن قم بإنشاء مشروع Django باستخدام الأمر التالي:

django-admin startproject django_project

سيؤدي هذا إلى إنشاء مشروع Django الخاص بك باسم “Django_project” كما سيقوم بإنشاء مجلد إعدادات Django رئيسي بنفس الاسم “Django_project”. و هذه هي الطريقة العادية لإنشاء مشاريع جانغو.

الآن بعد أن قمت بإنشاء مشروع Django، داخل نفس الدليل، ستقوم بإنشاء مجلدات التطبيقات والوسائط والمجلدات الخاصة بالملفات الثابتة والقوالب.

mkdir static
mkdir media
mkdir templates
mkdir apps

افتح django_project/settings.py باستخدام محرر النصوص. ثم قم بإضافة المسار، ثم قم بحفظ الملف.

إنشاء تطبيقات مشروع جانغو

أفضّل التفكير في تطبيقات Django كوحدات أو مكونات قابلة لإعادة الاستخدام. وهذا يساعدني على تحديد بعض الميزات وفصلها عن بعضها البعض، مما يؤدي إلى تحسين إمكانية إعادة الاستخدام وقابلية الصيانة.

لإنشاء تطبيقات مشروع Django، تحتاج إلى تغيير الدليل الحالي، و الانتقال إلى مجلد “التطبيقات” وبمجرد دخوله، قم بتشغيل الأمر startapp.

cd apps/
django-admin startapp app_1

بمجرد تنفيذ الأمر السابق ستجد مجلد app_1 بداخله.

الآن، بعد أن قمت بإنشاء تطبيق app_1، يتعين عليك تسجيله في ملف settings.py.

لتسجيل تطبيق Django، افتح django_project/settings.py وابحث عن قائمة INSTALLED_APPS. ثم أضف اسم التطبيق الذي قمت بإنشائه إلى القائمة.

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',

    'apps.app_1', # <--- هنا
]

إعداد ملف الإعدادات

يحتاج تطوير تطبيق Django إلى إعداد ملف الإعدادات الخاص بالمشروع. و هذه الخطوة أمر لا بد منه للمشاريع من أجل إعداده لبيئات مختلفة مثل الاختبار والتدريج والإنتاج والتطوير.

لا يوفر Django طريقة للحصول على إعدادات منفصلة. حيث يتم وضع جميع الإعدادات المتعلقة بالمشروع في ملف settings.py. هناك عدة طرق لتلبية المتطلبات اللازمة، ولكن الطريقة المفضلة لدي هي وجود وحدة إعدادات محلية مختلفة.

 INSTALLED_APPS

لتفعيل التطبيقات، نحتاج إلى إضافة التطبيقات في ملف الإعدادات تحت قائمة INSTALLED_APP. يمكن أن تكون التطبيقات من أنواع مختلفة مثل المكتبة وتطبيقات الجهات الخارجية وتطبيقات المشروع والتطبيقات الافتراضية.

افتراضيًا، سيبدو INSTALLED_APPS في settings.py بهذا الشكل:

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
]

لإضافة تطبيقاتنا يمكنك إتباع تقنية وجدتها وهي فصل قوائم التطبيقات الافتراضية وتطبيقات الطرف الثالث والتطبيقات المحلية.

DEFAULT_APPS = [
     'django.contrib.admin',
     'django.contrib.auth',
     'django.contrib.contenttypes',
     'django.contrib.sessions',
     'django.contrib.messages',
     'django.contrib.staticfiles',
 ]
THIRD_PARTY_APPS =[
     # إضافة التطبيقات التي تقوم بتثبيتها باستخدام مدير الحزم
 ]
 LOCAL_APPS =[
     # إضافة التطبيقات المحلية التي تقوم بإنشائها باستخدام startapp
 ]
 INSTALLED_APPS = DEFAULT_APPS + THIRD_PARTY_APPS + LOCAL_APPS

فصل الإعدادات المحلية لقاعدة بيانات Django

يتم إنشاء المشاريع وتطويرها أولاً في وضع التطوير، ثم تنتقل إلى وضع الإنتاج. يتم نقل المشاريع إلى بيئات و أجهزة مختلفة. تحتوي كل بيئة على بيانات اعتماد وإعدادات مختلفة لقاعدة البيانات، لذا يتعين عليك تغييرها في كل مرة.

لتجنب إيقاف الكود وفصل قيم قاعدة البيانات المحلية، ستقوم بإنشاء اسم ملف local_settings.py واستيراده في ملف settings.py.

قم بإزالة قاموس قاعدة البيانات من ملف settings.py وأضفه إلى local_settings.py.

# local_settings.py
# Database
# https://docs.djangoproject.com/en/2.2/ref/settings/#databases

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'django_shop', 
        'USER': 'root',
        'PASSWORD': 'password',
        'HOST': 'localhost',
        'PORT': '80',
    }
}

وقم باستيراد ملف local_settings.py في نهاية ملف settings.py .

# settings.py
# ...
# Loading from local_settings.py file
try:
    from django_shop.local_settings import *
except ImportError:
    pass

تغيير دليل مسارات قالب جانغو

بدلاً من الاحتفاظ بجميع القوالب الخاصة بك ضمن مجلد التطبيقات، قم بإنشاء مجلد منفصل واحتفظ بجميع قوالب التطبيقات فيه.

قم بإنشاء مجلد باسم templates على مستوى مجلد المشروع. و بعد ذلك تحتاج إلى إخبار Django عن مسار القالب.

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [BASE_DIR + '/templates/',], # <- here
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
            ],
        },
    },
]

إضافة مسارات للملفات ثابتة و الوسائط

لتشغيل ملفاتنا الثابتة وملفات الوسائط، تحتاج إلى إضافة المسار لكليهما إلى ملف settings.py.

أضف الأسطر التالية في نهاية ملف settings.py.

# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/2.2/howto/static-files/STATIC_URL = '/static/'
STATICFILES_DIRS = (     
os.path.join(BASE_DIR, 'static'), 
) 
STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles')

MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
MEDIA_URL = '/media/'

ملاحظة – مجلد الوسائط والملفات الثابتة موجودان على مستوى مجلد المشروع.

جمع الملفات الثابتة

يوفر django.contrib.staticfiles طريقة لتجميع الملفات الثابتة في دليل واحد، حتى يمكنك خدمتها بسهولة.

بعد أن قمت بتعيين مسار STATIC_ROOT فبمجرد تشغيل الأمر Collectstatic، سيقوم بنسخ جميع الملفات الثابتة إلى مجلد STATIC_ROOT.

./manage.py collectstatic

بعد تنفيذ الأمر السابق سنحصل على الرسالة التالية : 119 static files copied to 'django_project/static'.

حان الوقت لتجريب الموقع بتشغيل السيرفر المحلي من خلال الامر التالي :

./manage.py runserver

اكتشاف المزيد من بايثون العربي

اشترك للحصول على أحدث التدوينات المرسلة إلى بريدك الإلكتروني.

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *

Scroll to Top

اكتشاف المزيد من بايثون العربي

اشترك الآن للاستمرار في القراءة والحصول على حق الوصول إلى الأرشيف الكامل.

Continue reading