صنف العرض
جزء من قسم واجهات العرض المعتمدة على الأصناف في رحلة Django على Coddy. الدرس 1 من 18.
يبني هذا القسم لوحة وظائف، وصفحتها الرئيسية عبارة عن عرض دالي مثل كل العروض حتى الآن. يتيح لك Django أيضًا كتابة عرض على هيئة صنف: ترث صنفًا فرعيًا من View وتضيف طريقة واحدة لكل طريقة HTTP. يستدعي طلب GET get()، ويستدعي طلب POST post().
from django.views import View
class RecipeCountView(View):
def get(self, request):
total = Recipe.objects.count()
return HttpResponse(f"{total} recipes")تأخذ الطريقة self، ثم request، وتُرجع استجابة، كما يفعل العرض الدالي. يحتاج المسار إلى دالة، وينشئ .as_view() واحدة من الصنف: path("count/", views.RecipeCountView.as_view()). في كل طلب، تنشئ تلك الدالة كائنًا جديدًا من الصنف وتستدعي الطريقة المطابقة.
يحصل الطلب الذي لا يعرّف الصنف طريقته، مثل طلب POST إلى هذا العرض، على الاستجابة 405 الطريقة غير مسموح بها. وتظهر الفائدة بعد ذلك: يوفّر Django أصنافًا تنفّذ بالفعل المهام الشائعة.
التحدي
سهلحوّل الصفحة الرئيسية إلى صنف.
- في
jobs/views.py، استبدل الدالةhomeبـHomeView، وهوViewتنفّذ فيهget()ما كانت تنفّذهhome. - في
jobs/urls.py، وجّه المسار""إلى الصنف. أبقِ علىname="home".
اضغط «تشغيل»: ما زالت الصفحة الرئيسية تعرض 12 jobs open.
جرّب بنفسك
from django.shortcuts import render
from .models import Job
def home(request):
count = Job.objects.count()
return render(request, "jobs/home.html", {"count": count})
جميع دروس واجهات العرض المعتمدة على الأصناف
تدرّب بنفسك: Playground لـ Django