# How to convert your Function Based View into a Class Based View in Django?

***Note: If you are looking for a Full Stack Developer (Django+React), then connect with me on*** [***LinkedIn***](https://www.linkedin.com/in/mnamegaurav/) ***or contact me through my*** [***portfolio***](https://gaurav.devjunction.in/)***.***

In **Django** you can use a **Function Based View**(**FBV**) or a **Class Based View**(**CBV**), both kinds have its own advantages and disadvantages.

But there is no doubt that **CBV** can make your work a lot easier than **FBV** by handling some repetitive work for you.

Converting your normal **Function Based Views** into **Class Based Views** is pretty simple, let’s see how:

* Suppose our **FBV** looks something like this:
    

```python
def my_view(request):
	if request.method == 'GET':
		# Your View logic on GET
		# ...
	elif request.method == 'POST':
		# Your View logic on POST
		# ...
```

* When you will convert it into a **CBV**, it will look something like this:
    

```python
from django.views.generic import View

class MyView(View):
	def get(self, request):
		# Your View logic on GET
		# ...
	def post(self, request):
		# Your View logic on POST
		# ...
```

As you can see that, you just have to use `View` class from Django generic views, and just define two methods for `GET` and `POST` requests.

This is the most basic version of **CBV** give above, but there are some more other **CBVs** as well for common tasks such as:

**Generic Base Views:**

* RedirectView
    
* TemplateView
    
* View
    

**Authentication Views:**

* LoginView
    
* LogoutView
    
* PasswordChangeDoneView
    
* PasswordChangeView
    
* PasswordResetCompleteView
    
* PasswordResetConfirmView
    
* PasswordResetDoneView
    
* PasswordResetView
    

**Generic CRUD Views:**

* CreateView
    
* DeleteView
    
* DeleteViewCustomDeleteWarning
    
* FormView
    
* UpdateView
    

> ***For more such crispy blogs daily, follow Dev.Junction, subscribe to our newsletter and get notified.***

## Social Links

* **LinkedIn:** [https://www.linkedin.com/in/mnamegaurav/](https://www.linkedin.com/in/mnamegaurav/)
    
* **YouTube:** [https://www.youtube.com/c/devjunction](https://www.youtube.com/c/devjunction)
    
* **Website:** [https://gaurav.devjunction.in/](https://gaurav.devjunction.in/)
    
* **GitHub:** [https://github.com/mnamegaurav](https://github.com/mnamegaurav)
    
* **Instagram:** [https://www.instagram.com/mnamegaurav/](https://www.instagram.com/mnamegaurav/)
    
* **Twitter:** [https://twitter.com/mnamegaurav](https://twitter.com/mnamegaurav)
