Можно сделать отдельно бек и отдельно фронт, вариант как раз с drf, API и так далее.
То есть клиент тоже будет что-то делать, а не просто принимать и показывать.
И, собственно, и бек, и фронт вместе. Сразу готовый HTML код уже вместе со всеми данными.
Условно:
<!-- 1. DRF, fastAPI и так далее -->
<div id="dynamicdata"></div>
<script>
dynamicdata.innerHTML = "эти данные появились через скрипт";
</script>
<!-- 2. Django напрямую -->
<div id="staticdata">Эти данные уже вставил сервер, клиенту ничего делать не надо, скрипт не нужен</div>