mdjango
v0.1.0rc2.dev3+g175c8392a llms.txtllms-full.txt github

Reference

Settings#

All configuration is ordinary Django settings. mdjango reads them on every request through mdjango.conf.get_conf(), so there is no restart to pick up a change under runserver. MDJANGO_CONTENT_DIR is required. Everything else has a default. The Theme's colours and type are set in CSS (theme tokens), not here — the one setting that touches them, MDJANGO_EXTRA_CSS, only loads your stylesheet; it carries no values.

Content#

Setting Type Default Effect
MDJANGO_CONTENT_DIR str or Path required Root of the Content tree.
MDJANGO_INCLUDE_DRAFTS bool DEBUG Include Pages marked draft: true in the registry, and so in navigation, search, the LLM artifacts and the export.
MDJANGO_ALWAYS_REBUILD bool DEBUG Re-read the Content tree and rebuild the search index and LLM artifacts on every request. Also disables response caching.

Shell#

Setting Type Default Effect
MDJANGO_BRAND str "docs" Wordmark text in the header. Fallback for <title>.
MDJANGO_SITE_TITLE str "" <title>, and the # heading of llms.txt and llms-full.txt. Falls back to MDJANGO_BRAND.
MDJANGO_HOME_URL str "/" Target of the wordmark link.
MDJANGO_VERSION str "" Display string rendered as a chip in the header. Hidden when empty. Not used for routing.
MDJANGO_GITHUB_URL str "" Renders a header link labelled github. Hidden when empty.
MDJANGO_HEADER_LINKS iterable of {"label": str, "url": str} dicts or mdjango.conf.HeaderLink () Extra header links, in order, between the llms.txt links and the GitHub link.
MDJANGO_EXTRA_CSS str or iterable of str () Stylesheet {% static %} name(s), linked after mdjango's own sheet — the supported way to override the seven CSS seeds without shadowing a template. A string is one file; an iterable is several, in order. See Change the colours and type.
MDJANGO_ASSET_EXTENSIONS iterable of str png jpg jpeg gif svg webp Non-markdown file extensions served as assets from the Content tree (case-insensitive, leading dot optional). Defaults to images; set it to widen (e.g. add pdf) or narrow what a page can reference beside itself.

LLM artifacts#

Setting Type Default Effect
MDJANGO_LLM_DOCS bool True Master switch for the llms.txt, llms-full.txt, index.md and per-page .md routes, the header and drawer links, the <link rel="alternate">, and the export of those files. False returns 404 from all four routes. Search is unaffected.
MDJANGO_DESCRIPTION str "" One-line summary rendered as a > blockquote under the title in llms.txt and llms-full.txt.

Caching#

Setting Type Default Effect
MDJANGO_CACHE_SECONDS int 300 TTL of the server-side page cache (Django's default cache backend, key mdjango:page:<path>, @index for the Index page) and the value of Cache-Control: public, max-age=. 0 disables the page cache and sets Cache-Control: no-cache. Ignored while MDJANGO_ALWAYS_REBUILD is true. An ETag is always emitted.

Validation#

Nothing is checked at startup. There are no Django system checks. A wrong value surfaces on the first request, as a 500 in a running site or as an error from mdjango_build.

Fault Raised
MDJANGO_CONTENT_DIR missing or empty django.core.exceptions.ImproperlyConfigured
MDJANGO_CONTENT_DIR is not a directory mdjango.features.common.exceptions.ContentError
a MDJANGO_HEADER_LINKS dict without label or url KeyError
MDJANGO_EXTRA_CSS neither a string nor an iterable of them TypeError
MDJANGO_CACHE_SECONDS not convertible with int() ValueError or TypeError

Not settings#

  • INSTALLED_APPS must contain "django_cotton" and "mdjango". "django.contrib.staticfiles" is needed to serve the Shell's assets. Order between the two apps does not matter.
  • STATIC_URL is used by mdjango_build as the prefix of the exported static directory.
  • There is no setting for the maximum tree depth (fixed at three), for disabling search, for the markdown extensions, for a canonical URL, or for a logo. (A stylesheet does have one now — MDJANGO_EXTRA_CSS, above.)
  • There is no setting for analytics or other <head> scripts — a setting cannot safely carry raw markup. Inject them through the head slot instead; see Add analytics and other head tags.
  • There is no base-URL or domain setting. mdjango emits root-relative URLs, so it stays portable across mount prefixes. The sitemap needs absolute URLs, so it derives the domain from the request at runtime, or from the mdjango_build --base-url flag for the static export — never a setting. See Make your docs discoverable.