Django template structure ... أي الطريقتين افضل?

السلام عليكم
اثناء رحلتنا في التعلم تعترضنا جميعا بعض المشاكل و احيانا تكون اقرب الى تساؤل منها الى مشكلة
و عندما وجدت الجواب اردت مشاركته معكم :relaxed:
عند اضافة مجلد ال templates الى مشروع دجانغو توجد طريقتان :
الطريقة الأولى و تسمى App-level


كما تلاحظون المشروع اسمه portfolio و في داخله لدينا app اسمها jobs
حسب الطريقة الاولى فاننا نقوم باضافة مجلد templates داخل ال jobs يحتوي بدوره على مجلد اخر يحمل نفس الاسم كما هو مبين اعلاه
ثم نقوم باضافة كل الtemplates الخاصة بنا هناك

هذه الطريقة تصلح لعدم الخلط بين الtemplates خاصة اذا كان لدينا اكثر من app في مشروعنا ( حسنا هذا ما فهمته انا :sweat_smile: ) فكلما اصبح المشروع اكبر زادت احتمالية التداخل

اما الطريقة الثانية فتسمى
Project-level
اي ان مجلد ال templates سيكون مباشرة تحت المجلد الاساسي للمشروع و يتم داخله ادراج كل الtemplates الخاصة بكل ال apps في هذا المجلد دون تحديد اسم ال app

لكن هذه الطريقة تحتاج لتغيير بسيط او دعنا نقول اضافة بسيطة في ملف settings.py ( نعم ذاك الملف الذي لا تفكر ان تعبث به دون ان تعرف ما تفعل :rofl: هذا ما تعلمته :sweat_smile: )

كما لاحطتم فقد قمت باضافة هذا السطر
os.path.join(BASE_DIR, ‘templates’)
الذي يسمح لل templates loader في البحث على مستوى المشروع عن مجلد اسمه templates .
هذه الطريقة تستعمل عموما (او الافضل استعمالها ) عندما يكون المشروع متكونا من app واحدة
بينما الطريقة الاخرى للمشاريع الضخمة
عن نفسي لم اتعرف على الطرقتين الا اليوم :sweat_smile:
مذا عنكم ؟ ايهما تفضلون ؟ و هل هناك اي اضافة او معلومة ربما لم استطع ايصالها

7 Likes

أهلا عزيزي سيف اشتقنا لك كثيرا :heart_eyes:

شكرا على المقال و الشرح الرائع جدا.
الحقيقة أنا أستعمل الطريقتين في سياقين مختلفين:

  • أولا App Level أستعملها عندما أحتاج الى بناء تطبيق يعتمد أساسا على ال templates وبالتالي كل التطبيقات ستحتوي على الكثير منها لذلك أفضل فرقها لكي يكون البحث و التنظيم أسهل

  • ثانيا Project Level أستعملها عند بناء ال APIs سيبقى عندي بعض ال templates المتفرقة من هنا و من هناك لكنها لا تعتبر الأساس في بناء ال APIs لذلك أفضل فصلها في مجلد خاص

5 Likes

اهلا بك هشاام :relaxed:
كما قلت بالضبط ف لكل منا سياق قد يحتاج فيه للطريقتين
وكما قلت لك فأنا اليوم فقط حتى عرفت الفرق :grin::grin:

3 Likes

اهلاً وسهلاً سيف وحشتنا :smile:

وشكراً لك على مشاركتنا الفائدة

3 Likes

استاذ محمد بارك الله فييك
والله وحشتوني انا ايضا :blush::blush::heart_eyes:

3 Likes