Comment construire la documentation sphinx pour le projet django

j'ai un projet django, que j'document à l'aide de repos dans les docstrings de faire ce qui suit:

  1. Aide diagloags au sein de l'IDE
  2. plus tard pour construire la documentation HTML en utilisant Sphinx

ma documentation apparaît correctement dans IDE (PyCharm), cependant Je ne peux pas configurer Sphinx pour générer de la documentation HTML pour moi.

Voici la structure de mon projet

+--------------------------------------------+
|  /saassapp         # django project path   |
|     /docs          # dir for sphinx        |
|        conf.py     # sphinx config file    |
|        ...                                 |
|     settings.py    # django settings       |
|     /studyview     # django app            |
|        ...
|     ...                                    |
+--------------------------------------------+

des idées? Un exemple de conf.py dossier très utile. Remercier.

EDIT

mon nom de projet est saassapp et le module pour lequel j'essaie de faire un doc s'appelle studyview.

15
demandé sur miki725 2011-10-12 03:08:31

6 réponses

les fonctionnalités de migration introduites dans Django 1.7 empêchent les réponses précédentes de travailler sur des versions plus récentes. Au lieu de cela, vous devrez faire une configuration manuelle. Analogue à toutes les réponses précédentes, vous aurez d'abord à S'assurer que Django peut trouver vos paramètres, puis appeler django.setup() qui va charger les paramètres et configurer vos modèles. Ajoutez ceci à votre projet Sphinxconf.py:

os.environ['DJANGO_SETTINGS_MODULE'] = 'projectname.settings'
import django
django.setup()
18
répondu Simon 2016-01-14 17:00:50

ajouter ce qui suit à votre conf.py et vous n'aurez pas besoin de définir DJANGO_SETTINGS_MODULE à chaque fois:

import sys, os

sys.path.append('/path/to/your/project') # The directory that contains settings.py

# Set up the Django settings/environment
from django.core.management import setup_environ
from myproject import settings

setup_environ(settings)
14
répondu Mike Ryan 2011-11-19 17:16:24

avec Django 1.6, Je ne pouvais pas utiliser la réponse de @MikeRyan depuis from django.core.management import setup_environ a été désapprouvée. Au lieu de cela, je suis allé à mon conf.py le fichier et a ajouté ce qui suit:

import sys
import os

sys.path.append(os.path.join(os.path.dirname(__file__), '..'))
os.environ['DJANGO_SETTINGS_MODULE'] = 'dataentry.settings'
from django.conf import settings

Permettez-moi d'expliquer chaque ligne:

  1. j'ai utilisé un chemin d'accès relatif (deux répertoires), mais vous pouvez aller de l'avant et mettre un chemin absolu, si vous le souhaitez
  2. mon nom de projet est settings.py le fichier est à l'intérieur de ce dossier; changez le nom (entrée de données) pour le nom de ton projet
12
répondu Will 2015-11-17 09:25:15

je pense que vous devez rendre Sphinx conscient de la variable D'environnement DJANGO_SETTINGS_MODULE. Donc, ne

export DJANGO_SETTINGS_MODULE=mysite.settings

(ou quelle est la bonne valeur pour vous)

exécuter

make html

dans la même session de terminal.

4
répondu mzjn 2011-10-14 19:07:55

la Fin, mais à l'aide de Django>=1.9 et sphinx>=1.6.4 définir le chemin équivalent au projet BASE_DIR dans le conf.py

import django
sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.dirname(__file__))))
os.environ["DJANGO_SETTINGS_MODULE"] = "project.settings"
django.setup()
1
répondu jackotonye 2017-10-10 23:15:11

Vous avez réellement n'avez pas besoin d'un autre settings module. Il est parfois plus facile d'en avoir un (lorsque les tests et les paramètres de partage de doc), mais ce n'est pas nécessaire.

C'est comment dj-stripe met en place django pour sphinx. La clé ici est l' settings.configure appel INSTALLED_APPS comme il s'agit de la seule clé de réglage requise (si votre application n'en nécessite pas plus bien sûr):

import django
from django.conf import settings
from django.utils.encoding import force_text
from django.utils.html import strip_tags

import djstripe  # noqa


# If extensions (or modules to document with autodoc) are in another directory,
# add these directories to sys.path here. If the directory is relative to the
# documentation root, use os.path.abspath to make it absolute, like shown here.
# sys.path.insert(0, os.path.abspath('.'))
cwd = os.getcwd()
parent = os.path.dirname(cwd)
sys.path.append(parent)


settings.configure(
    INSTALLED_APPS=[
        "django.contrib.admin",
        "django.contrib.auth",
        "django.contrib.contenttypes",
        "django.contrib.sessions",
        "django.contrib.sites",
        "jsonfield",
        "djstripe",
    ],
    SITE_ID=1,
    STRIPE_PUBLIC_KEY=os.environ.get("STRIPE_PUBLIC_KEY", ""),
    STRIPE_SECRET_KEY=os.environ.get("STRIPE_SECRET_KEY", ""),
)


django.setup()
0
répondu Janusz Skonieczny 2017-11-08 17:23:15