# Documentation Django 3.1.9.dev

# Le générateur de documentation de l’administration de Django

L’application `admindocs` de Django récupère la documentation depuis les chaînes de documentation « docstrings » des modèles, des vues, des balises de gabarit et des filtres de gabarit de toutes les applications figurant dans `INSTALLED_APPS` et rend cette documentation disponible à partir de `l'administration de Django`.

## Aperçu

Pour activer `admindocs`, voici ce qu’il faut faire :

- Ajoutez `admindocs` au réglage `INSTALLED_APPS`.
- Ajoutez `path('admin/doc/', include('django.contrib.admindocs.urls'))` aux motifs d’URL `urlpatterns`. Assurez-vous que cette inclusion apparaisse avant la ligne `'admin/'`, de sorte que les requêtes vers `/admin/doc/` ne soient pas interceptées par cette dernière.
- Installez le module Python docutils (https://docutils.sourceforge.io/).
- Facultatif : l’utilisation des signets dynamiques d’admindocs nécessite que `django.contrib.admindocs.middleware.XViewMiddleware` soit installé.

Une fois ces étapes terminées, vous pouvez parcourir la documentation en allant sur l’interface d’administration et en cliquant sur le lien « Documentation » dans le coin supérieur droit de la page.

## Assistants de documentation

Le balisage spécial suivant peut être utilisé dans vos chaînes de documentation « docstrings » afin de créer facilement des liens vers d’autres composants :

Composant Django | Rôles reStructuredText
--- | ---
Modèles | `:model:`étiquette_app.NomModèle``
Vues | `:view:`étiquette_app.nom_de_vue``
Balises de gabarit | `:tag:`nom_balise``
Filtres de gabarit | `:filter:`nom_filtre``
Gabarits | `:template:`chemin/vers/gabarit.html``

## Référence des modèles

La section modèles de la page d”`admindocs` décrit chaque modèle du système avec tous les champs, propriétés et méthodes disponibles. Les relations avec les autres modèles apparaissent sous forme d’hyperliens. Les descriptions sont récupérées des attributs `help_text` pour les champs ou des chaîne de documentation « docstrings » pour les méthodes de modèle.

Un modèle avec une documentation utile pourrait ressembler à ceci :

    class BlogEntry(models.Model):
        """
        Stores a single blog entry, related to :model:`blog.Blog` and
        :model:`auth.User`.
        """
        slug = models.SlugField(help_text="A short label, generally used in URLs.")
        author = models.ForeignKey(
            User,
            models.SET_NULL,
            blank=True, null=True,
        )
        blog = models.ForeignKey(Blog, models.CASCADE)
        ...

        def publish(self):
            """Makes the blog entry live on the site."""
            ...

## Référence des vues

Chaque URL de votre site possède une entrée séparée dans les pages `admindocs`; un clic sur une URL donnée montre la vue correspondante. Voici quelques exemples de choses utiles que vous pouvez documenter dans les chaînes de documentation « docstrings » de vos fonctions de vue :

- Une brève description de ce que la vue réalise.
- Le contexte ou une liste de variables disponibles dans le gabarit de la vue.
- Le nom du ou des gabarits utilisés pour cette vue.

Par exemple :

    from django.shortcuts import render

    from myapp.models import MyModel

    def my_view(request, slug):
        """
        Display an individual :model:`myapp.MyModel`.

        **Context**

        ``mymodel``
            An instance of :model:`myapp.MyModel`.

        **Template:**

        :template:`myapp/my_template.html`
        """
        context = {'mymodel': MyModel.objects.get(slug=slug)}
        return render(request, 'myapp/my_template.html', context)

## Référence des balises et filtres de gabarit

Les sections balises et filtres d”`admindocs` décrivent toutes les balises et les filtres livrés avec Django (en fait, la documentation de référence des balises intégrées et des filtres intégrés proviennent directement de ces pages). Toutes les balises ou les filtres que vous créez ou qui sont ajoutés par une application tierce apparaîtront aussi dans ces sections.

## Référence des gabarits

Bien qu”`admindocs` n’offre aucun moyen de documenter les gabarits eux-mêmes, si vous utilisez la syntaxe `:template:`chemin/vers/gabarit.html`` dans une chaîne « docstring », la page résultante vérifiera le chemin de ce gabarit avec le moteur de chargement des gabarits de Django. Cela peut être un moyen pratique pour vérifier si le gabarit existe et de montrer où ce gabarit est stocké dans le système de fichiers.

## Signets dynamiques inclus

Un signet dynamique est disponible depuis la page `admindocs`:

Documentation pour cette page
  Vous renvoie depuis n’importe quelle page vers la documentation de la vue qui génère cette page.

L’utilisation de ce signet dynamique nécessite que `XViewMiddleware` soit installé et que vous soyez connecté à `l'administration de Django` en tant que `User` avec `is_staff` contenant `True`.