Turns out jingo imports all apps in INSTALLED_APPS when it’s loaded.
Which loads django_browserid. Which imports django_browserid.compat.
Which attempts to import jingo, which fails since that’s a circular
import, causing the fake jingo.register shim to be used, which means
the helpers aren’t available in the templates.
The solution? Shove the shim inside helpers.py, which is loaded as late
as possible by jingo to avoid import issues like this.
Turns out jingo imports all apps in INSTALLED_APPS when it’s loaded. Which loads django_browserid. Which imports django_browserid.compat. Which attempts to import jingo, which fails since that’s a circular import, causing the fake jingo.register shim to be used, which means the helpers aren’t available in the templates.
The solution? Shove the shim inside helpers.py, which is loaded as late as possible by jingo to avoid import issues like this.