استراتژی ویوهای مبتنی بر کلاس

سلام

در این فصل قصد داریم ویوهای برنامه را با استفاده از مفهوم کلاس پیاده سازی کنیم. مسلماً باید به کدهای قبلی برگردیم و بخش هایی از آن را تغییر دهیم.

بعد هم به مسائل مهم دیگر مثل صفحه بندی و شماره گذاری صفحات، Markdownها و حتی یک ویرایشگر ساده می پردازیم و برنامۀ خود را انسان فهم(!!) می کنیم. باید توجه داشت که در جنگو تمام ویوها یک تابع هستند یعنی حتی ویوهای مبتنی بر کلاس یا Class-Based Viewها یا CBVها هم باید مقداری را به عنوان تابع return کرده و باز گردانند.

ویوهای مبتنی بر کلاس برای توسعه دهندگان امکان استفادۀ دوباره یا توسعۀ ویوها را راحت تر می کنند. مزایای این کار زیاد بوده و می توان به قابلیت توسعۀ تکنیک های شی گرایی مثل ارث بری چندگانه، هندل کردن متدهای Http و … دست یافت.

قبل از ادامۀ بحث می خواهم سه مفهوم را توضیح دهم.

  • -Function-Based Views (FBV)
  • -Class-Based Views (CBV)
  • -Generic Class-Based Views (GCBV)

* یک FBV ساده ترین نوع ویو در جنگوست. تابعی که یک شی از نوع http request  را دریافت کرده و یک http response را باز می گرداند.

* یک CBV  شامل هر نوع از ویوهای جنگویی می شود که اولا کلاسی در پایتون باشد و دوم اینکه کلاس انتزاعی django.views.generic.View را توسعه دهد. CBVها برای توسعه و استفاده دوبارۀ کدها بسیار مناسب اند.

* GCBVها همان CBVهای  پیشفرض جنگو هستند که از قبل برای کارهای مشخصی نظیر لیست کردن، ساخت، بروزرسانی و حذف ویوها پیاده سازی شده اند.

در ادامه می خواهیم برای هر یکی از این استراتژی ها مثالی داشته باشیم.

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

 

مطلب بعدی: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 …

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