Configuring your Sphinx project
django-sphinx-hosting
expects your Sphinx docs to be in a specific format to
be able to be imported, and to be built with specific sphinx extensions. On
this page, we describe how to configure your Sphinx project appropriately.
Sphinx conf.py settings
project
To import a documentation set, there must be a
sphinx_hosting.models.Project
in the database whose machine_name
matches the project
in Sphinx’s conf.py
config file for the docs to be
imported. The machine_name
for a project is set at project create time within
django-sphinx-hosting
.
Create a project by navigating to the “Projects” page and clicking the “Create
Project” button. You’ll be asked for a human name, a machine name and a
description. Whatever you use for your version control repository name is a
good choice for Machine Name
.
release
The release
in the conf.py
will be used to create or update a
sphinx_hosting.models.Version
. We will set
sphinx_hosting.models.Version.version
to the value of release
.
extensions
sphinx_rtd_theme [required]
Miminally, you must use the Sphinx ReadTheDocs theme when packaging your documentation. The importers, views and stylesheets inside django-sphinx-hosting depend on the HTML structure, Javascript and CSS classes that that theme provides.
Ensure that you have html_theme_options["collapse_navigation"]
set to
False
, otherwise your auto-built navigation within django-sphinx-hosting
may look wrong.
extensions = [
'sphinx_rtd_theme',
...
]
html_theme = 'sphinx_rtd_theme'
html_theme_options = {
"collapse_navigation": False
}
sphinxcontrib-jsonglobaldoc [optional]
If you have a complex page hierarchy in your documentation, you may benefit from
sphinxcontrib-jsonglobaltoc. This extension
extends JSONHTMLBuilder
from sphinxcontrib-serializinghtml
to
add a globaltoc
key to each .fjson
file produced. globaltoc
contains the HTML for the global table of contents for the entire set of
documentation. This allows django-sphinx-hosting to more reliably build your
navigation.
extensions = [
'sphinx_rtd_theme',
'sphinx_json_globaltoc'
...
]