• 1401/06/14

استفاده از class base view :

سلام استاد عزیز وقتتون بخیر

ببخشید یک سوال دارم. آیا استفاده کردن از class base view ها در پروژه ها اجباری هست؟؟ من با استفاده همون ساختار فانکشن ویو راحت تر هستم. اگه از ساختار کلاس ویو ها استفاده نکنیم، از لحاظ دسترسی به امکانات محدود هستیم؟

  • 1401/06/14
  • ساعت 19:49

با سلام.

 

آیا استفاده کردن از class base view ها در پروژه ها اجباری هست؟

 

پاسخ، قطعاً، خیر است. هیچ اجباری در کار نیست.

می توانید پروژه های خود را با هر کدام از CBV یا FBV ها پیش ببرید. در زبانهای برنامه نویسی و framework ها، معمولاً می توان کارها را به روشهای مختلفی انجام داد و django نیز از این قاعده مستثنی نیست.

 

اگه از ساختار کلاس ویو ها استفاده نکنیم، ....

 

برای پاسخ به این قسمت ابتدا اجازه دهید یک مقایسه مختصر بین آنها داشته باشیم:

 

برخی مزایای FBV:

* خواندن، درک و پیاده سازی آن نسبت به CBV آسان تر است.

* استفاده مستقیم از decorator ها

* مناسب برای پیاده سازی عملیات خاص

* وقتی قرار است چندین فرم را به طور همزمان مدیریت کنید، FBV انتخاب مناسب تری به نظر می رسد.

 

و در کنار آن برخی ایراداتی که به آن وارد است:

* ممکن است باعث code redundancy شود و توسعه کدها در آینده دشوارتر شود.

* باید از شرط ها برای مدیریت متدهای HTTP استفاده شود.

 

CBV ها جایگزین مطلق FBV ها نیستند (و بالعکس) اما آنها نیز به نوبه خود مزایایی دارند که به سختی می توان از آن چشم پوشی کرد:

 

* مهمترین مزیت CBV، وراثت است. در CBV، می توان کلاس دیگری را به ارث برد و آن را برای موارد استفاده مختلف تغییر داد.

* می توان با استفاده از Mixins عملکردهای بیشتری به آنها اضافه کرد.

* در پیروی از اصل DRY (که شعار اصلی django نیز هست) به شما کمک می کند. قابلیت استفاده مجدد کد در CBV ها امکان پذیر است.

(نه اینکه در FBV ها اینطور نباشد اما به دلیل امکان استفاده از وراثت و ... این قابلیت استفاده مجدد به طور فوق العاده ای توسعه می یابد)

* مزیت دیگر آن ساختار بهتر کدهاست. در CBV ها می‌توان از متدهای مختلف (post, get, put, delete, ...) برای مدیریت درخواست‌های مختلف HTTP (به جای استفاده از عبارات شرطی) استفاده کرد.

* همچنین می توان از Built-in Generic CBV ها نیز استفاده شایانی کرد ( مانند TemplateView, ListView, ...)

 

 

برخی ایراداتی که ممکن است به آن وارد شود:

* پیاده سازی آنها نسبت به FBV پیچیده تر و خواندن و درک کدها دشوارتر است.

* import های بیشتر یا override کردن method ها در view decorator ها مورد نیاز است.

 

 

به هر حال توجه داشته باشید که وقتی صحبت از "......." تر بودن می شود، همه و همه نسبی هستند.

و (نظر شخصی خودم) پیاده سازی پروژه ها در جنگو با ترکیبی از FBV و CBV است که هیجان انگیزتر می شود.

 

با این مقدمه: تصمیم با شماست.

 

موفق باشید.


  • 1401/06/14
  • ساعت 22:02

سلام مجدد. خیلی خیلی ممنونم از وقتی که گذاشتید و تشکر از راهنمایی شما.


  • 1401/06/15
  • ساعت 10:30

خواهش می کنم.


  • 1401/06/16
  • ساعت 09:24

سلام دوست من

در کل مشکلی ایجاد نمیشه و محدودیتی نخواهید داشت اما خیلی از امکانات همونطور که دوست عزیزمون weby گفتن از قبل پیاده سازی شده و میتونین ازشون استفاده کنین

در کل مشکلی نداره


logo-enamadlogo-samandehi