Don't forget that Django and React make a great combination.
You probably still want Django to handle server-side rendering for most of your site (unless you're a masochist). Django Rest Framework for the API, and React (or whatever) to handle the app-like parts.
This was my original approach. After all, no need to do an SPA for regular pages. Only the app-type parts with a DRF backend and an Angular/React frontend.
But... as I started publishing these apps on mobile app stores (cordova), I found myself also having to write a REST endpoint and client side renderer for the app versions.
Even though I'd much rather do a contact form, for example, in a server side view. But if I also need the REST API and client-rendered version for the app version, I might as well only write it once.
1. On the whole 'normal' websites with an overabundance of client-side rendering are in a kind of 'uncanny valley'. They nearly behave the way a normal server-side rendered site would but something always breaks whether it be the back button or link behaviour, caching/refreshing or something. So from the user's perspective it's often a bit off.
2. It's still more work from the developer's side. You have to implement stuff you get for free with server-side rendering. And currently (and for the foreseeable future IMHO) Python/Django is still simpler, more maintainable and nicer to work with. So I'd prefer to keep the client-side code where it belongs - the parts of the site that are more like an 'app' than a 'website'.
You probably still want Django to handle server-side rendering for most of your site (unless you're a masochist). Django Rest Framework for the API, and React (or whatever) to handle the app-like parts.