The two ways to build a front end

There are two fundamental ways to connect a javascript front end to Django: coupled or decoupled. Django Manifest loader is specifically for the coupled option.

A coupled front end and back end means that Django is responsible for the front ends asset files. As a user you point your web browser to the Django app, and the Django app in turn makes sure you get the front end.

A decoupled front and back end means they are hosted separately. Django has no knowledge of front end asset files, and does not serve them. As a user you point your browser at the staticly hosted front end app and that app interacts with Django through an API.

I typically choose the coupled option as

  • I don’t want to manage multiple repos

  • or multiple servers

  • Django is powerful

The decoupled option is good for if

  • you value the performance gain of using a static file server

  • your front end and django app are managed by different teams

  • you want micro services

It’s a tradeoff. Django Manifest Loader makes the coupled option much easier than it was before.