Class-Based View

سلام

یک CBV، ویویی است که یک کلاس ویو را توسعه می دهد. تفاوت اصلی در آن است که درخواست ها و requestهایی که درون کلاس نیاز به پردازش دارند به صورت جداگانه و بسته به متدهای http شامل get, post, put, head,… می شوند. به تعبیر دیگر اول چک می کنیم که متد http از نوع get, post, put, head,… بوده است یا خیر و سپس تابع مربوط به آن را پیمایش و پیاده سازی می کنیم.

views.py

ضمناً روش ارجاع دهی به CBVها در ماژول urls.py کمی متفاوت است.

urls.py

در قطعه کد بالا باید از متد ()as_view در انتها استفاده شود. این متد تابع view را براساس الگوهای url باز می گرداند. در موارد خاص امکان استفاده از متد ()as_view  با آرگومان های ورودی هم وجود دارد که این کار با هدف شخصی سازی رفتار CBV انجام می شود. درست مانند کاری که در فصل های قبلی در خصوص ویوهای اعتبارسنجی و برای شخصی سازی قالب ها انجام دادیم.

نکتۀ جالب در خصوص CBVها، امکان اضافه کردن متدهای بیشتر است. مثلاً:

ترجمۀ اختصاصی توسط تمدن

 

مطلب بعدی: Generic Class-Based View

مطلب قبلی: Function-Based View

بدون دیدگاه

پاسخی بگذارید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

جنگو
صفحه بندی با استفاده از FBV

سلام کد زیر مربوط به پیاده سازی صفحه بندی با استفاده از توابع است. boards/views.py (مشاهده کد کامل) from django.db.models import Count from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger from django.shortcuts import get_object_or_404, render from django.views.generic import ListView from .models import Board def board_topics(request, pk): board = get_object_or_404(Board, pk=pk) queryset = …

جنگو
صفحه بندی و شماره گذاری صفحات

سلام این کار با استفاده از CBV بسیار آسان است. اما قبل از آن می خواهیم صفحه بندی مطالب را به صورت دستی انجام دهیم تا از مکانیسم واقعی آن آگاهی پیدا کنی و سپس از تکنولوژی CBV بهره برداری می کنیم. از الآن به بعد روی ویوی board_topics کار …

جنگو
ویوی لیست | List View

سلام با بازتعریف ویوی قبلی می توانیم از مزایای CBV بهره مند شویم. در این مثال می خواهیم صفحۀ اصلی را تغییر دهیم. در این صفحه ما صرفا تمام بوردها را از دیتابیس گرفته و در HTML لیست می کنیم. boards/views.py from django.shortcuts import render from .models import Board def …

هرگونه استفادۀ از این آموزش به صورت رایگان و با ارجاع به تمدن جایز است.