Start here. This is the direct spoken answer to practice first.
Overview
Both view styles can be correct; the useful choice is the one that keeps request behavior clear.
I use a function-based view when the request flow is small and explicit. I use a class-based view when HTTP methods share setup or when Django's generic views provide a close match for common list, detail, form, create, or update behavior. Class-based views offer reuse through inheritance and mixins, but their dispatch and method-resolution flow can be harder to follow.