محتويات الدورة

Django / أساس الطلب والبيانات / الدرس 1

المشاريع والإعدادات ودورة الطلب

حدد المسؤوليات في تطبيق Django وميز إعداد المشروع والتطبيقات القابلة لإعادة الاستخدام والعروض المحلية.

وقت القراءة التقريبي: 4 دقيقةتاريخ مراجعة المحتوى
في هذه الصفحة

أهداف الدرس

  • المشروع ينسق مسؤوليات التطبيق
  • يحمل الرد حالة وترويسات ومحتوى
  • تسجيل سياق التنفيذ أثناء التشخيص

المشروع ينسق مسؤوليات التطبيق

ينسق Django حل العناوين والطلبات والعروض والقوالب والنماذج والوسيط. يوفر المشروع إعداد التطبيق المنشور ونقاط دخوله، بينما يجمع app ميزة أو قدرة مجال. هذه حدود تنظيم لا حدود أمان تلقائية. يمكن لتطبيق تدريبي تقديم دليل ورش دون معرفة نشره. افصل قواعد المجال عن استقبال HTTP لاختبارها مستقلة. تقدم الأداة افتراضيات مفيدة، لكن المجلد المولد أو صفحة الترحيب لا يثبتان اكتمال التفويض وإعداد الإنتاج والاستعادة. ولا يفرض فصل التطبيقات تنظيميًا أن لكل منها عزلا أمنيا؛ فقد تتشارك الإعدادات والبيانات داخل المشروع نفسه، ولذلك يجب أن تبقى الصلاحيات محددة صراحة.

استخدام أساس معلن ومدعوم

يستهدف المقرر Django 5.2 LTS ويختبر الأمثلة محليا بإصدار 5.2.18 مع Python 3.12.3. تعرض معلومات الإصدار المراجعة سلاسل أحدث؛ فالاختيار أساس مدعوم لا ادعاء الأحدث. اقرأ توثيق الإصدار وافصل صيانة الترقيعات عن نسخ درس عشوائي. تعزل البيئة الحزم لا الشفرة العدائية. تضبط الأمثلة إعدادا مصطنعا وقاعدة SQLite في الذاكرة دون استيراد إعداد مشروع، وتعمل بعمليات جديدة. وتظل المقاطع التي تحتاج المشروع غير مستقلة التشغيل. واختيار سلسلة طويلة الدعم لا يلغي ضرورة مراجعة الترقيعات المتوافقة، كما أن تشغيل المثال في عملية جديدة يمنع تداخل إعداداته مع إعداد تجربة سابقة.

يحمل الرد حالة وترويسات ومحتوى

ينشئ المثال HttpResponse ضمن إعداد معزول. الحالة والنوع والجسم جوانب منفصلة؛ فلا يثبت جمال عرض الجسم ملاءمة الحالة والتخزين. حدد نوع النص أو البيانات واختر الحالة بحسب النتيجة. قد تضلل كلمة «خطأ» بحالة 200 العميل والمراقبة. يمكن فحص الرد دون خادم يستمع، فتفيد الأمثلة المحددة في تعلم الحد بأمان. ومن المهم أن يختبر العميل نوع المحتوى وترويسات التخزين إلى جانب النص، لأن رسالة تبدو صحيحة قد تحمل عقد HTTP خاطئا للمستهلك الآلي.

python مثال تنفيذي معزول
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.http import HttpResponse
response = HttpResponse("Workshop ready", content_type="text/plain", status=200)
print(response.status_code)
print(response.content.decode("utf-8"))
الناتج المتوقع
200
Workshop ready

يفحص الكائن محليا دون مقبس وتفحص الحالة والنص مستقلين.

تتبع طلب دون خدمة شبكية

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

python مثال تنفيذي معزول
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.http import HttpResponse
from django.test import RequestFactory

def greeting(request):
    name = request.GET.get("name", "Guest")
    return HttpResponse(f"Hello {name}", content_type="text/plain")

request = RequestFactory().get("/greet/", {"name": "Mira"})
print(greeting(request).content.decode("utf-8"))
الناتج المتوقع
Hello Mira

يوفر المصنع طلبا مصطنعا ولا يدعي الاستدعاء المباشر تشغيل التوجيه والوسيط.

تسجيل سياق التنفيذ أثناء التشخيص

يتضمن التقرير الإصدارين ومصدر الإعداد والطريقة والمسار والحالة المتوقعة والاستثناء أو الرد. احجب الأسرار والبيانات ولا تنشر بيئة أو إعدادات كاملة. حدد أول حد يفشل؛ فالاستيراد والعنوان والتحقق والقاعدة إصلاحات مختلفة. لا تبدأ بالنشر إذا أخطأ حساب العرض المصغر. خادم التطوير للتطوير ولا يثبت نشرا آمنا قابلا للتوسع. تبني الدروس الحدود فوق هذا الأساس الصريح. ويجب أن يستطيع قارئ التقرير إعادة الحالة بالمدخل المصطنع نفسه، مع معرفة أي طبقة استُبعدت من الاختبار وأي طبقة كانت سبب الفشل الأول.

الأخطاء الشائعة وإصلاحها

يعد اختبار العرض اختبار طلب كامل

لماذا يحدث؟
استُدعي دون الوسيط.
كيف تصلحه؟
حدد حد الاختبار صراحة.
كيف تتجنب تكراره؟
وثق الطبقات المختبرة.

يحمل المثال إعداد قاعدة العمل

لماذا يحدث؟
استورد إعداد المشروع ضمنيا.
كيف تصلحه؟
اضبط سياقا مصطنعا منفصلا.
كيف تتجنب تكراره؟
تحقق من الوجهات قبل التشغيل.

يرى العميل نجاح عملية فاشلة

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

اختبر فهمك

1. ما الطبقات التي لا يغطيها استدعاء العرض المباشر؟

اعرض الحل المشروح

لا يعمل حل العناوين والوسيط تلقائيا، فلا تفترض الجلسة والمصادقة وCSRF. استخدم الحد لمنطق العرض وأضف أدلة العميل والتكامل والمتصفح لبقية العقود دون توسيع معنى اختبار واحد.

2. صمم تقريرا آمنا لرد يختلف بين البيئات.

اعرض الحل المشروح

سجل الإصدارات ونمط الإعداد دون أسرار والطريقة والمسار والمدخل المصطنع والمتوقع والفعلي. صغر العرض وميز التوجيه والوسيط قبل تعديل بنية غير مرتبطة، واحفظ الخطأ الخاص بمكان محدود.

أهم ما تعلمته

  • للمشروع والتطبيق والعرض والرد مسؤوليات مختلفة.
  • صرح بحد الاختبار والإعداد.
  • لا يثبت نجاح التطوير الجاهزية الإنتاجية.

المراجع الرسمية