{# Theme head block: anti-FOUC script, CSS, and optional JS include #} {# Safety: autoescape off is safe here — all variables (css_block, direction, etc.) #} {# are framework-generated in theme_tags.py, not user input. #} {# cookie_prefix_js and resolved_mode_js are JSON-encoded strings, framework-generated. #} {% load static %} {% autoescape off %} {{ css_block }} {{ deferred_css_block }} {% comment %} `?v={{ asset_version }}` on each of these, because none of them had a cache-buster and Django's static server sends no `Cache-Control` — so a browser applied heuristic freshness to `components.js` / `components.css` and kept the copy it already had. An edit to either was invisible on the page it was made for. The token is derived from the assets' newest mtime (see `_theme_asset_version`), so it moves on an edit rather than on a release. {% endcomment %} {% if include_component_link %}{% endif %} {% if include_components_app_link %}{% endif %} {{ component_css_block }} {% if include_js %} {% endif %} {% endautoescape %}