What is the difference between function-based views and class-based views?

Beginner

Answer

Function-based views (FBV): Simple functions that take request and return response

def article_list(request):
    articles = Article.objects.all()
    return render(request, 'articles/list.html', {'articles': articles})

Class-based views (CBV): Classes that inherit from Django's view classes

from django.views.generic import ListView

class ArticleListView(ListView):
    model = Article
    template_name = 'articles/list.html'
    context_object_name = 'articles'

CBVs provide more structure and reusability, while FBVs are simpler and more explicit.