Class Based Views or Function Based Views

Class Based Views or Function Based Views

Mar 9, 2023·

2 min read

Play this article

Table of contents

No heading

No headings in the article.

The decision of which type of view to use in a Django application, function-based views (FBVs) or class-based views (CBVs), will depend on the complexity and requirements of the application. FBVs are simpler and easier to write, making them ideal for handling single HTTP requests that display static content, such as a page serving up information from a database. CBVs, on the other hand, are more powerful and can handle multiple HTTP requests and various features such as inheritance and mixins. They offer better code reuse and organization, although they can also require more boilerplate code and may be more difficult to learn and understand, especially for more complex applications.

For example, if an application has a page with a 'contact' form that sends an email on submission, a CBV would be a much better choice than an FBV. This is because the CBV would allow you to support both the GET and POST requests, so that the form could be displayed properly, as well as process the user's input when they submit it. Using an FBV would limit the application to only being able to display the form, as handling the POST request would require additional logic.

In addition to this, web applications often need to handle dynamic data, such as user accounts or logins. When dealing with user accounts, a CBV can provide additional benefits; like allowing the user to access their account page using different methods, such as GET and PUT. With CBVs, you can also create a base view which can then be extended for each new resource, improving code reuse.

Ultimately, the best view for a particular application will depend on its complexity and requirements. When choosing between FBVs and CBVs, it is important to consider the amount of time spent learning and writing code, as well as the features and benefits that could be provided by using either one of these views.