Nous attribuons une grande importance à la cohérence et à la lisibilité de la documentation. Après tout, Django a été créé dans un environnement journalistique ! Nous traitons donc la documentation sur un pied d’égalité avec le code : nous visons à l’améliorer aussi souvent que possible.
Les modifications de documentation se présentent généralement sous deux formes :
Cette section explique comment les rédacteurs peuvent préparer les modifications de documentation de la manière la plus utile possible et qui évite au maximum les erreurs.
Bien que la documentation de Django soit destinée à être lue au format HTML sur https://docs.djangoproject.com/, nous l’éditons dans un ensemble de fichiers textes pour une souplesse maximale. Ces fichiers se trouvent dans le répertoire de premier niveau docs/
d’une publication de Django.
Si vous souhaitez commencer à contribuer à la documentation, obtenez la version de développement de Django à partir du dépôt de code source (voir Installation de la version de développement). La version de développement possède la version la plus à jour de la documentation, comme pour le code. Nous reportons aussi les corrections et améliorations de documentation vers la dernière version publiée en fonction de ce que le commiteur décide. Ceci parce qu’il est très avantageux de posséder une documentation de la dernière version publiée la plus à jour et correcte possible (voir Différences entre versions).
La documentation de Django utilise le système de documentation Sphinx, qui se base lui-même sur docutils. L’idée de base est de transformer de la documentation en texte brut avec une mise en forme minimale en HTML, PDF ou tout autre format de sortie.
Pour construire la documentation localement, installez Sphinx :
$ python -m pip install Sphinx
...\> py -m pip install Sphinx
Puis, à partir du répertoire docs
, construisez la version HTML :
$ make html
...\> make.bat html
Pour commencer à contribuer, il est recommandé de lire la référence reStructuredText.
Your locally-built documentation will be themed differently than the documentation at docs.djangoproject.com. This is OK! If your changes look good on your local machine, they’ll look good on the website.
La documentation est scindée en plusieurs catégories :
Les tutoriels prennent l’utilisateur par la main à travers une série d’étapes pour créer quelque chose.
L’aspect important d’un tutoriel est d’aider le lecteur à accomplir quelque chose d’utile, de préférence aussi vite que possible, dans le but de lui donner confiance.
Expliquez la nature du problème à résoudre afin que le lecteur comprenne ce que l’on est en train de faire. Ne pensez pas qu’il faille commencer par des explications sur le fonctionnement des choses ; ce qui compte est ce que le lecteur fait, et non pas ce que vous expliquez. Il peut être utile de faire référence à ce que l’on a fait dans des explications a posteriori.
Les guides thématiques visent à expliquer un concept ou un sujet d’un point de vue assez général.
Faites des liens vers le matériel de référence plutôt que de le répéter. Utilisez des exemples et n’hésitez pas à expliquer des choses qui vous semblent évidentes, il pourrait s’agir de l’explication dont quelqu’un a vraiment besoin.
La mise à disposition de contexte sous-jacent aide les débutants à faire des liens entre le sujet et des éléments qu’ils connaissent déjà.
Les guides de référence contiennent des références techniques pour les API. Ils présentent le fonctionnement de la machinerie interne de Django avec des instructions d’utilisation.
Restez bien centré sur le sujet du matériel de référence. Vous pouvez compter sur la connaissance des concepts de base par le lecteur, mais celui-ci cherche à savoir ou à se rappeler comment Django les applique.
Les guides de référence ne sont pas l’endroit pour des explications générales. Si vous êtes en train d’expliquer des concepts de base, il pourrait être nécessaire de déplacer ce contenu vers un guide thématique.
Les guides pratiques sont des marches à suivre qui accompagnent le lecteur dans une suite d’étapes dans des sujets clés.
Ce qui compte le plus dans un guide pratique est le résultat attendu par son lecteur. Un guide pratique doit toujours être orienté sur le résultat plutôt que sur des détails internes sur la manière dont Django implémente ce qui est en cours d’étude.
Ces guides vont plus loin que les tutoriels et comptent sur un certaine connaissance du fonctionnement de Django. On part du principe que le lecteur a suivi les tutoriels. N’hésitez pas à réorienter le lecteur sur un tutoriel adéquat plutôt que de répéter un contenu existant.
Lors d’utilisation de pronoms en référence à une personne hypothétique, comme dans « a user with a session cookie », il est préférable d’utiliser des pronoms neutres. Au lieu de :
Essayez d’éviter des mots qui minimisent la difficulté impliquée par une tâche ou une opération, tels que « easily », « simply », « just », « merely », « straightforward », etc. L’expérience des gens ne correspond pas forcément à votre attente, et ceux-ci pourraient ressentir de la frustration lorsqu’ils ne trouvent pas qu’une étape est si simple ou évidente que le texte ne le laissait penser.
Voici quelques lignes directrices de style pour des termes fréquemment utilisés dans la documentation :
Ces lignes directrices régulent le format de notre documentation reST (reStructuredText) :
Dans les titres de section, ne mettez en majuscules que les mots initiaux et les noms propres.
Limitez les lignes de la documentation à 80 caractères, sauf si un exemple de code est manifestement moins lisible lorsqu’il est réparti sur deux lignes, ou pour une autre bonne raison.
La chose principale à garder en tête lors de l’écriture et de l’édition de la documentation est que plus il y a de balisage sémantique, mieux c’est. Donc
Add ``django.contrib.auth`` to your ``INSTALLED_APPS``...
N’est pas aussi utile que
Add :mod:`django.contrib.auth` to your :setting:`INSTALLED_APPS`...
La raison en est que Sphinx va générer des liens adéquats avec ce deuxième exemple, ce qui aide grandement les lecteurs.
Il est possible de préfixer la cible par un ~
(caractère tilde) pour que seul le dernier composant du chemin soit affiché. Par exemple, :mod:`~django.contrib.auth`
affichera un lien sur le mot « auth » seul.
Utilisez intersphinx
pour ajouter des références aux documentations de Python et de Sphinx.
Ajoutez .. code-block:: <lang>
aux blocs littéraux pour que leur syntaxe soit mise en évidence. Mais on préfère en général laisser agir la coloration syntaxique automatique en utilisant ::
(deux fois deux-points). L’avantage est que du code contenant de la syntaxe non valable ne sera pas coloré. Si par exemple on ajoute .. code-block:: python
, la coloration syntaxique sera forcée même si la syntaxe n’est pas entièrement valable.
Pour améliorer la lisibilité, utilisez .. admonition:: Titre descriptif
plutôt que .. note::
. Utilisez ces boîtes de manière parcimonieuse.
Utilisez ces styles d’en-têtes
===
One
===
Two
===
Three
-----
Four
~~~~
Five
^^^^
Utilisez :rfc:
pour faire référence à des RFC et essayez de faire le lien vers la section adéquate si possible. Par exemple, écrivez :rfc:`2324#section-2.3.2`
ou :rfc:`Texte de lien personnalisé <2324#section-2.3.2>`
.
Utilisez :pep:
pour faire référence aux propositions d’amélioration de Python (PEP) et essayez de faire le lien vers la section adéquate si possible. Par exemple, écrivez :pep:`20#easter-egg`
ou :pep:`Easter Egg <20#easter-egg>`
.
Utilisez :mimetype:
pour vous référer à un type MIME sauf si la valeur est entre guillemets pour un exemple de code.
Utilisez :envvar:
pour vous référer à une variable d’environnement. Il est parfois aussi nécessaire de définir une référence à la documentation pour cette variable d’environnement en utilisant .. envvar::
.
En plus du balisage propre à Sphinx, la documentation de Django définit quelques unités descriptives supplémentaires :
Réglages
.. setting:: INSTALLED_APPS
Pour faire un lien vers un réglage, utilisez :setting:`INSTALLED_APPS`
.
Balises de gabarit
.. templatetag:: regroup
Pour faire le lien, utilisez :ttag:`regroup`
.
Filtres de gabarit
.. templatefilter:: linebreaksbr
Pour faire le lien, utilisez :tfilter:`linebreaksbr`
.
Requêtes de champs (par ex. Foo.objects.filter(bar__exact=qqchose)
):
.. fieldlookup:: exact
Pour faire le lien, utilisez :lookup:`exact`
.
Commandes django-admin
:
.. django-admin:: migrate
Pour faire le lien, utilisez :djadmin:`migrate`
.
Options de ligne de commande django-admin
:
.. django-admin-option:: --traceback
Pour faire le lien, utilisez :option:`nom_commande --traceback`
(ou omettez nom_commande
pour les options partagées par toutes les commandes comme --verbosity
).
Liens vers les tickets Trac (typiquement réservés pour les notes de publication des versions correctives)
:ticket:`12345`
La documentation de Django utilise une directive console
personnalisée pour la documentation des exemples en ligne de commande impliquant django-admin
, manage.py
, python
, etc.). Dans la production HTML de la documentation, deux onglets apparaîtront dans l’interface, un avec l’invite de commande de type Unix et l’autre avec une invite de commande de style Windows.
Par exemple, vous pouvez remplacer ce fragment
use this command:
.. code-block:: console
$ python manage.py shell
par celui-ci
use this command:
.. console::
$ python manage.py shell
Remarquez deux choses :
.. code-block:: console
.'$'
, '/'
comme séparateur de chemins de systèmes de fichiers, etc.)L’exemple ci-dessus va produire un bloc d’exemple de code avec deux onglets. Le premier contiendra :
$ python manage.py shell
(aucun changement par rapport au rendu .. code-block:: console
standard).
Le second contiendra :
...\> py manage.py shell
Notre politique pour les nouvelles fonctionnalités est la suivante :
Toute documentation pour de nouvelles fonctionnalités doit être écrite de manière à ce qu’il soit clairement visible que les fonctionnalités ne sont disponibles que pour la version de développement de Django. Nous partons du principe que les lecteurs de la documentation utilisent la dernière version publiée et non pas la version de développement.
La méthode préférée pour marquer les nouvelles fonctionnalités est de précéder leur documentation par « .. versionadded:: X.Y
», suivi d’une ligne vierge obligatoire et d’une description facultative (avec indentation).
Les améliorations générales ou d’autres changements dans l’API qui doivent être mis en évidence utilisent la directive « .. versionchanged:: X.Y
» (au même format que la directive versionadded
du paragraphe précédent).
Ces blocs versionadded
et versionchanged
doivent être « autonomes », c’est-à-dire que dans la mesure où ces annotations ne sont conservées que dans deux versions principales, il est utile de pouvoir simplement les enlever sans devoir remettre en forme, changer l’indentation ou modifier le texte avoisinant. Par exemple, au lieu de placer toute la description d’une fonctionnalité nouvelle ou modifiée dans un bloc, faite quelque chose comme ceci
.. class:: Author(first_name, last_name, middle_name=None)
A person who writes books.
``first_name`` is ...
...
``middle_name`` is ...
.. versionchanged:: A.B
The ``middle_name`` argument was added.
Placez les annotations pour les modifications au bas de la section, et non pas au-dessus.
De même, évitez de faire référence à une version spécifique de Django en dehors des blocs versionadded
et versionchanged
. Même dans un bloc, il est souvent redondant de mentionner des versions puisque le rendu automatique de ces annotations produit respectivement « New in Django A.B » et « Changed in Django A.B ».
Si une fonction, un attribut, etc. a été ajouté, il est aussi admis d’utiliser une annotation versionadded
comme ceci
.. attribute:: Author.middle_name
.. versionadded:: A.B
An author's middle name.
Nous pouvons enlever l’annotation .. versionadded:: A.B
sans aucun changement d’indentation lorsque ce sera le bon moment.
Optimisez la taille de compression des images quand c’est possible, pour les fichiers PBG, utilisez OptiPNG et advpng
de AdvanceCOMP :
$ cd docs
$ optipng -o7 -zm1-9 -i0 -strip all `find . -type f -not -path "./_build/*" -name "*.png"`
$ advpng -z4 `find . -type f -not -path "./_build/*" -name "*.png"`
This is based on OptiPNG version 0.7.5. Older versions may complain about the
-strip all
option being lossy.
Pour un exemple rapide sur la manière dont tout s’enchaîne, considérez l’exemple hypothétique suivant :
Tout d’abord, la disposition générale du document ref/settings.txt
pourrait ressembler à ceci :
========
Settings
========
...
.. _available-settings:
Available settings
==================
...
.. _deprecated-settings:
Deprecated settings
===================
...
Ensuite, le document topics/settings.txt
pourrait contenir quelque chose comme :
You can access a :ref:`listing of all available settings
<available-settings>`. For a list of deprecated settings see
:ref:`deprecated-settings`.
You can find both in the :doc:`settings reference document
</ref/settings>`.
Nous utilisons l’élément de référence croisée de Sphinx doc
lorsque nous ajoutons un lien vers un autre document dans son entier et l’élément ref
lorsque nous ajoutons un lien vers un emplacement spécifique dans un document.
Puis, voyez comment les réglages sont annotés :
.. setting:: ADMINS
ADMINS
======
Default: ``[]`` (Empty list)
A list of all the people who get code error notifications. When
``DEBUG=False`` and a view raises an exception, Django will email these people
with the full exception information. Each member of the list should be a tuple
of (Full name, email address). Example::
[('John', 'john@example.com'), ('Mary', 'mary@example.com')]
Note that Django will email *all* of these people whenever an error happens.
See :doc:`/howto/error-reporting` for more information.
Ceci balise l’en-tête suivante comme la cible « canonique » du réglage ADMINS
. Cela signifie que lors de chaque mention de ADMINS
, on peut y faire référence avec :setting:`ADMINS`
.
C’est grosso modo ainsi que le tout fonctionne.
Avant de commiter la documentation, il est recommandé de lancer le correcteur orthographique. Vous devez pour cela installer d’abord sphinxcontrib-spelling <https://pypi.org/project/sphinxcontrib-spelling/>. Puis, à partir du répertoire docs
, lancez make spelling
. Le cas échéant, les mots faux ainsi que le fichier et le numéro de ligne où ils apparaissent seront enregistrés dans _build/spelling/output.txt
.
Si vous rencontrez des faux positifs (des erreurs signalées qui n’en sont pas), faites l’une des choses suivantes :
docs/spelling_wordlist
(en prenant soin de respecter l’ordre alphabétique).Consultez Traduction de la documentation de Django si vous souhaitez aider à traduire la documentation dans une autre langue.
django-admin
¶Sphinx peut générer une page de manuel pour la commande django-admin. Ceci est configuré dans docs/conf.py
. Au contraire d’autres productions de documentation, cette page de manuel devrait être contenue dans le dépôt de Django et dans ses publications comme docs/man/django-admin.1
. Il n’est pas nécessaire de mettre à jour ce fichier lors de la mise à jour de la documentation, car sa mise est jour fait partie du processus de publication.
Pour générer une version à jour de la page de manuel, lancez make man
dans le répertoire docs
. La nouvelle page de manuel sera écrite dans docs/_build/man/django-admin.1
.
déc. 07, 2021