Django / دليل حلول تحريري
تمييز القوالب المفقودة من فشل تقديم الأصول
حدد مرحلة البحث الفاشلة قبل تغيير المحملات وإعداد الأصول ومسارات النشر.
قاعدة معرفة للقراءة فقط · بلا تعليقات عامة
تعرّف على الأعراض
قد يظهر TemplateDoesNotExist أو تعرض الصفحة وأصولها 404، وقد ينجح التطوير دون النشر. يبحث القالب لبناء HTML وتبحث الأصول وتنشر وتقدم بمرحلة مختلفة.
افهم الأسباب المحتملة
- من الأسباب اسم خاطئ أو تطبيق ومحمل مفقود أو إعداد غير المقصود أو أثر جمع غائب أو manifest وبادئة مختلفان.
- لا يثبت المصدر المحلي تقديم الأثر، وللمرفوع ثقة وتخزين مختلفان فلا تدمجه عشوائيا بالإصلاح.
1. حدد بحث المورد الفاشل
سجل الاستثناء أو عنوان الأصل والإعداد دون أسرار. يسبق خطأ القالب اكتمال الصفحة وقد يأتي 404 بعدها. افحص المرجع الناتج والحالة والنطاق والبادئة واحفظ الطلب وهوية الأثر. لا تغير محمل القالب لإصلاح مسار يقدمه الخادم بمكان آخر. وقد يحتوي المصدر على وسم صحيح بينما ينتج إعداد البادئة عنوانا عاما خاطئا، لذلك ينبغي الاحتفاظ بعنوان الطلب الذي أرسله المتصفح وهوية الأثر المنشور نفسه.
2. افحص بحث القالب المهيأ
افحص المحرك والمجلدات والتطبيق والاسم؛ يتجنب catalog/list.html التصادم. طالع المحاولات بدليل خاص دون نشر المسارات. يثبت المثال محملا ذاكرية واسمًا صحيحا ومفقودا دون مشروع. أصلح مالك البحث الفعلي بعد التشخيص. وقد يكون الملف موجودا لكنه خارج كل محمل مهيأ، كما أن تطابق اسم عام من تطبيق آخر قد يخفي خطأ تحديد القالب المقصود في المشروع.
from django.conf import settings
settings.configure(
SECRET_KEY="synthetic-course-key",
USE_I18N=False, USE_TZ=True,
INSTALLED_APPS=[],
DATABASES={"default": {"ENGINE": "django.db.backends.sqlite3", "NAME": ":memory:"}},
DEFAULT_AUTO_FIELD="django.db.models.AutoField",
ALLOWED_HOSTS=["testserver"],
)
import django
django.setup()
from django.template import Context, Engine, TemplateDoesNotExist
engine = Engine(loaders=[("django.template.loaders.locmem.Loader", {"catalog/list.html": "<h1>{{ title }}</h1>"})])
print(engine.get_template("catalog/list.html").render(Context({"title": "Course list"})))
try:
engine.get_template("catalog/missing.html")
except TemplateDoesNotExist:
print("Missing template diagnosed")
<h1>Course list</h1>
Missing template diagnosed
يبحث خريطة الذاكرة فقط ويلتقط الغياب المتوقع دون ملفات المشروع.
3. تتبع المصدر والأثر والتقديم منفصلة
للأصل افحص المحمل ثم أثر البناء والتعيين ثم التقديم. تختلف المجلدات والجذر والعنوان ولا تبدلها تخمينا. يحتاج manifest ملفات ومراجع متسقة وقد تتقادم التجزئة المكتوبة. استخدم static ولا تنفذ جمعًا ونشرا بوجهة مجهولة؛ حدد المصدر والمقصد ثم العملية المعتمدة. ولا ينشئ ضبط اسم backend الأثر المنشور تلقائيا؛ يجب أن تنتمي الملفات المعالجة والتعيين والمراجع إلى البناء المراجع نفسه قبل تفسير نجاح التقديم.
4. تحقق من المسار والإصدار المتوافق
أعد الصفحة وافحص الرد والنوع والمحتوى والبادئة وطلبا جديدا والتخزين. احفظ السابق حيث تشير صفحات قديمة إليه. لا يعوض البحث المحلي التقديم، وافحص عدم كشف المرفوع أو تنفيذه. أزل التجاوز المؤقت وتحقق بالإعداد والأثر المحفوظين. كما يجب أن يصمد الإصلاح بعد إزالة تعديلات أدوات التطوير المؤقتة، وألا يتسبب تغيير المسار في خلط وسيط خاص مع الأصول العامة أو حذف أصل تحتاجه صفحة قديمة.
تحقق من نجاح الإصلاح
يحل القالب بمحركه وتطلب الصفحة الأصول الصحيحة بالمحتوى والنوع دون كشف خاص، وسجل المرحلة المصححة لا مجرد نجاح التحديث.
امنع تكرار المشكلة
- استخدم نطاقات واحفظ manifest مع الأثر واختبر الصفحة تحت البادئة وافصل الأصول والمرفوعات.