{"title":"Écrire la documentation","version":"6.0","locale":"fr","docname":"internals/contributing/writing-documentation","url":"/fr/6.0/internals/contributing/writing-documentation/","canonical":"https://djangodocs.dev/fr/6.0/internals/contributing/writing-documentation/","summary":"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 !…","html":"<h1>Écrire la documentation<a class=\"heading-anchor\" href=\"#writing-documentation\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h1>\n<p>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.</p>\n<p>Les modifications de documentation se présentent généralement sous deux formes :</p>\n<ul class=\"simple\">\n<li><p>Des améliorations générales : corrections d’orthographe, résolutions d’erreurs et meilleures explications par une écriture plus claire et davantage d’exemples.</p></li>\n<li><p>Nouvelles fonctionnalités : documentation de fonctionnalités ajoutées au cadre logiciel depuis la version précédente.</p></li>\n</ul>\n<p>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.</p>\n<section id=\"the-django-documentation-process\">\n<h2>Le processus de documentation de Django<a class=\"heading-anchor\" href=\"#the-django-documentation-process\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Bien que la documentation de Django soit destinée à être lue au format HTML sur <a class=\"reference external\" href=\"https://docs.djangoproject.com/\">https://docs.djangoproject.com/</a>, nous l’éditons dans un ensemble de fichiers textes écrits dans le langage de balisage reStructuredText pour une souplesse maximale.</p>\n<p>Nous travaillons à partir de la version de développement du dépôt car celle-ci contient la documentation la plus à jour, comme c’est le cas pour le code.</p>\n<p>Les corrections et améliorations de documentation sont aussi reportées dans la dernière branche publiée, en fonction de leur pertinence jugée par le fusionneur. Nous pensons qu’il est avantageux d’avoir la meilleure documentation possible en tout temps pour la dernière version publiée (voir <a class=\"reference internal\" href=\"/fr/6.0/intro/whatsnext/#differences-between-doc-versions\"><span class=\"std std-ref\">Différences entre versions</span></a>).</p>\n<p>La documentation de Django utilise le système de documentation <a class=\"reference external\" href=\"https://www.sphinx-doc.org/\">Sphinx</a>, qui se base lui-même sur <a class=\"reference external\" href=\"https://docutils.sourceforge.io/\">docutils</a>. 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.</p>\n<p>Sphinx contient une commande <code class=\"docutils literal notranslate\"><span class=\"pre\">sphinx-build</span></code> pour transformer le texte reStructuredText en d’autres formats, tels que HTML ou PDF. Cette commande est configurable, mais la documentation de Django contient un fichier <code class=\"docutils literal notranslate\"><span class=\"pre\">Makefile</span></code> qui permet d’utiliser une commande plus courte : <code class=\"docutils literal notranslate\"><span class=\"pre\">make</span> <span class=\"pre\">html</span></code>.</p>\n</section>\n<section id=\"how-the-documentation-is-organized\">\n<h2>Organisation de la documentation<a class=\"heading-anchor\" href=\"#how-the-documentation-is-organized\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>La documentation est scindée en plusieurs catégories :</p>\n<ul>\n<li><p>Les <a class=\"reference internal\" href=\"/fr/6.0/intro/\"><span class=\"doc\">tutoriels</span></a> prennent l’utilisateur par la main à travers une série d’étapes pour créer quelque chose.</p>\n<p>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.</p>\n<p>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.</p>\n</li>\n<li><p>Les <a class=\"reference internal\" href=\"/fr/6.0/topics/\"><span class=\"doc\">guides thématiques</span></a> visent à expliquer un concept ou un sujet d’un point de vue assez général.</p>\n<p>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.</p>\n<p>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à.</p>\n</li>\n<li><p>Les <a class=\"reference internal\" href=\"/fr/6.0/ref/\"><span class=\"doc\">guides de référence</span></a> 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.</p>\n<p>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.</p>\n<p>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.</p>\n</li>\n<li><p>Les <a class=\"reference internal\" href=\"/fr/6.0/howto/\"><span class=\"doc\">guides pratiques</span></a> sont des marches à suivre qui accompagnent le lecteur dans une suite d’étapes dans des sujets clés.</p>\n<p>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.</p>\n<p>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.</p>\n</li>\n</ul>\n</section>\n<section id=\"how-to-start-contributing-documentation\">\n<h2>Comment débuter une contribution à la documentation<a class=\"heading-anchor\" href=\"#how-to-start-contributing-documentation\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h2>\n<section id=\"clone-the-django-repository-to-your-local-machine\">\n<h3>Création d’une copie locale du dépôt Django<a class=\"heading-anchor\" href=\"#clone-the-django-repository-to-your-local-machine\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Si vous souhaitez commencer à contribuer à notre documentation, obtenez la version de développement de Django à partir de son dépôt de code source (voir <a class=\"reference internal\" href=\"/fr/6.0/topics/install/#installing-development-version\"><span class=\"std std-ref\">Installation de la version de développement</span></a>) :</p>\n<div class=\"console\" data-console><div class=\"console-panel\" data-platform=\"unix\"><p class=\"console-label\" id=\"console-0-unix-label\">Linux / macOS</p><div class=\"code-block\" data-language=\"console\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Shell</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Shell code\"><code><span class=\"gp\">$ </span>git<span class=\"w\"> </span>clone<span class=\"w\"> </span>https://github.com/django/django.git\n</code></pre></div>\n</div><div class=\"console-panel\" data-platform=\"windows\"><p class=\"console-label\" id=\"console-0-windows-label\">Windows</p><div class=\"code-block\" data-language=\"doscon\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Windows</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Windows shell\"><code><span class=\"gp\">...\\&gt;</span> git clone https://github.com/django/django.git\n</code></pre></div></div></div>\n<p>Si vous pensez soumettre ces modifications, il est alors utile de créer une fourche du dépôt Django et de plutôt créer une copie locale de cette fourche.</p>\n</section>\n<section id=\"set-up-a-virtual-environment-and-install-dependencies\">\n<h3>Configurer un environnement virtuel et installer les dépendances<a class=\"heading-anchor\" href=\"#set-up-a-virtual-environment-and-install-dependencies\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Créez et activez un environnement virtuel, puis installez les dépendances :</p>\n<div class=\"code-block\" data-language=\"shell\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Shell</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Shell code\"><code>$<span class=\"w\"> </span>python<span class=\"w\"> </span>-m<span class=\"w\"> </span>venv<span class=\"w\"> </span>.venv\n$<span class=\"w\"> </span><span class=\"nb\">source</span><span class=\"w\"> </span>.venv/bin/activate\n$<span class=\"w\"> </span>python<span class=\"w\"> </span>-m<span class=\"w\"> </span>pip<span class=\"w\"> </span>install<span class=\"w\"> </span>-r<span class=\"w\"> </span>docs/requirements.txt\n</code></pre></div>\n</section>\n<section id=\"build-the-documentation-locally\">\n<h3>Construction locale de la documentation<a class=\"heading-anchor\" href=\"#build-the-documentation-locally\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Il est possible de construire une version HTML à partir du répertoire <code class=\"docutils literal notranslate\"><span class=\"pre\">docs</span></code>:</p>\n<div class=\"console\" data-console><div class=\"console-panel\" data-platform=\"unix\"><p class=\"console-label\" id=\"console-1-unix-label\">Linux / macOS</p><div class=\"code-block\" data-language=\"console\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Shell</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Shell code\"><code><span class=\"gp\">$ </span><span class=\"nb\">cd</span><span class=\"w\"> </span>docs\n<span class=\"gp\">$ </span>make<span class=\"w\"> </span>html\n</code></pre></div>\n</div><div class=\"console-panel\" data-platform=\"windows\"><p class=\"console-label\" id=\"console-1-windows-label\">Windows</p><div class=\"code-block\" data-language=\"doscon\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Windows</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Windows shell\"><code><span class=\"gp\">...\\&gt;</span> <span class=\"k\">cd</span> docs\n<span class=\"gp\">...\\&gt;</span> make.bat html\n</code></pre></div></div></div>\n<p>La documentation construite localement sera accessible à partir de <code class=\"docutils literal notranslate\"><span class=\"pre\">_build/html/index.html</span></code> et visible dans n’importe quel navigateur, même si le thème graphique sera différent de celui de la documentation sur <a class=\"reference external\" href=\"https://docs.djangoproject.com/\">docs.djangoproject.com</a>. Cela ne pose pas de problème. Si vos modifications apparaissent correctement sur votre machine locale, elles seront aussi correctes sur le site web.</p>\n</section>\n<section id=\"making-edits-to-the-documentation\">\n<h3>Édition de la documentation<a class=\"heading-anchor\" href=\"#making-edits-to-the-documentation\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Les fichiers sources sont des fichiers <code class=\"docutils literal notranslate\"><span class=\"pre\">.txt</span></code> situés dans le répertoire <code class=\"docutils literal notranslate\"><span class=\"pre\">docs/</span></code>.</p>\n<p>Ces fichiers sont écrits en langage de balisage reStructuredText. Pour apprendre ce balisage, consultez la ref:référence reStructuredText &lt;sphinx:rst-index&gt;.</p>\n<p>Pour modifier cette page, par exemple, il s’agit d’éditer le fichier  <a class=\"extlink-source reference external\" href=\"https://github.com/django/django/blob/stable/6.0.x/docs/internals/contributing/writing-documentation.txt\">docs/internals/contributing/writing-documentation.txt</a> et de reconstruire la sortie HTML avec <code class=\"docutils literal notranslate\"><span class=\"pre\">make</span> <span class=\"pre\">html</span></code>.</p>\n</section>\n<section id=\"documentation-quality-checks\">\n<span id=\"documentation-checks\"></span><h3>Documentation quality checks<a class=\"heading-anchor\" href=\"#documentation-quality-checks\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Several checks help maintain Django’s documentation quality, including\n<a class=\"reference internal\" href=\"#documentation-spelling-check\"><span class=\"std std-ref\">spelling</span></a>,\n<a class=\"reference internal\" href=\"#documentation-code-block-format-check\"><span class=\"std std-ref\">code block formatting</span></a>, and\n<a class=\"reference internal\" href=\"#documentation-lint-check\"><span class=\"std std-ref\">documentation style</span></a>.</p>\n<p>These checks are run automatically in CI and must pass before documentation\nchanges can be merged. They can also be run locally with a single command:</p>\n<div class=\"console\" data-console><div class=\"console-panel\" data-platform=\"unix\"><p class=\"console-label\" id=\"console-2-unix-label\">Linux / macOS</p><div class=\"code-block\" data-language=\"console\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Shell</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Shell code\"><code><span class=\"gp\">$ </span>make<span class=\"w\"> </span>check\n</code></pre></div>\n</div><div class=\"console-panel\" data-platform=\"windows\"><p class=\"console-label\" id=\"console-2-windows-label\">Windows</p><div class=\"code-block\" data-language=\"doscon\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Windows</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Windows shell\"><code><span class=\"gp\">...\\&gt;</span> make.bat check\n</code></pre></div></div></div>\n<p>This command runs all current checks and will include any new checks added in\nthe future.</p>\n<section id=\"spelling-check\">\n<span id=\"documentation-spelling-check\"></span><h4>Correction orthographique<a class=\"heading-anchor\" href=\"#spelling-check\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h4>\n<p>Before you commit your docs, it’s a good idea to run the spelling checker.\nYou’ll need to install <a class=\"extlink-pypi reference external\" href=\"https://pypi.org/project/sphinxcontrib-spelling/\">sphinxcontrib-spelling</a> first. Then from the\n<code class=\"docutils literal notranslate\"><span class=\"pre\">docs</span></code> directory, run:</p>\n<div class=\"console\" data-console><div class=\"console-panel\" data-platform=\"unix\"><p class=\"console-label\" id=\"console-3-unix-label\">Linux / macOS</p><div class=\"code-block\" data-language=\"console\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Shell</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Shell code\"><code><span class=\"gp\">$ </span>make<span class=\"w\"> </span>spelling\n</code></pre></div>\n</div><div class=\"console-panel\" data-platform=\"windows\"><p class=\"console-label\" id=\"console-3-windows-label\">Windows</p><div class=\"code-block\" data-language=\"doscon\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Windows</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Windows shell\"><code><span class=\"gp\">...\\&gt;</span> make.bat spelling\n</code></pre></div></div></div>\n<p>Wrong words (if any) along with the file and line number where they occur will\nbe saved to <code class=\"docutils literal notranslate\"><span class=\"pre\">_build/spelling/output.txt</span></code>.</p>\n<p>Si vous rencontrez des faux positifs (des erreurs signalées qui n’en sont pas), faites l’une des choses suivantes :</p>\n<ul class=\"simple\">\n<li><p>Surround inline code or brand/technology names with double grave accents\n(``)</p></li>\n<li><p>Cherchez des synonymes que le correcteur orthographique connaît.</p></li>\n<li><p>Si vous êtes certain-e que le mot utilisé est correct, ajoutez-le à la liste <code class=\"docutils literal notranslate\"><span class=\"pre\">docs/spelling_wordlist</span></code> (en prenant soin de respecter l’ordre alphabétique).</p></li>\n</ul>\n</section>\n<section id=\"code-block-format-check\">\n<span id=\"documentation-code-block-format-check\"></span><h4>Code block format check<a class=\"heading-anchor\" href=\"#code-block-format-check\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h4>\n<p>All Python code blocks should be formatted using the <a class=\"extlink-pypi reference external\" href=\"https://pypi.org/project/blacken-docs/\">blacken-docs</a>\nauto-formatter. This is automatically run by the <a class=\"reference internal\" href=\"/fr/6.0/internals/contributing/writing-code/coding-style/#coding-style-pre-commit\"><span class=\"std std-ref\">pre-commit hook</span></a> if configured.</p>\n<p>The check can also be run manually: provided that <code class=\"docutils literal notranslate\"><span class=\"pre\">blacken-docs</span></code> is\ninstalled, run the following command from the <code class=\"docutils literal notranslate\"><span class=\"pre\">docs</span></code> directory:</p>\n<div class=\"console\" data-console><div class=\"console-panel\" data-platform=\"unix\"><p class=\"console-label\" id=\"console-4-unix-label\">Linux / macOS</p><div class=\"code-block\" data-language=\"console\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Shell</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Shell code\"><code><span class=\"gp\">$ </span>make<span class=\"w\"> </span>black\n</code></pre></div>\n</div><div class=\"console-panel\" data-platform=\"windows\"><p class=\"console-label\" id=\"console-4-windows-label\">Windows</p><div class=\"code-block\" data-language=\"doscon\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Windows</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Windows shell\"><code><span class=\"gp\">...\\&gt;</span> make.bat black\n</code></pre></div></div></div>\n<p>The formatter will report any issues by printing them to the terminal and will\nreformat code blocks where possible.</p>\n</section>\n<section id=\"documentation-lint-check\">\n<span id=\"id3\"></span><h4>Documentation lint check<a class=\"heading-anchor\" href=\"#documentation-lint-check\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h4>\n<p>Django’s documentation is checked for reStructuredText style and formal issues\nusing <a class=\"extlink-pypi reference external\" href=\"https://pypi.org/project/sphinx-lint/\">sphinx-lint</a>. This helps catch problems like stray tabs, trailing\nwhitespace, excessive line length, and similar formatting problems.</p>\n<p>Once <code class=\"docutils literal notranslate\"><span class=\"pre\">sphinx-lint</span></code> is installed, the check can be run with the following\ncommand from the <code class=\"docutils literal notranslate\"><span class=\"pre\">docs</span></code> directory:</p>\n<div class=\"console\" data-console><div class=\"console-panel\" data-platform=\"unix\"><p class=\"console-label\" id=\"console-5-unix-label\">Linux / macOS</p><div class=\"code-block\" data-language=\"console\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Shell</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Shell code\"><code><span class=\"gp\">$ </span>make<span class=\"w\"> </span>lint\n</code></pre></div>\n</div><div class=\"console-panel\" data-platform=\"windows\"><p class=\"console-label\" id=\"console-5-windows-label\">Windows</p><div class=\"code-block\" data-language=\"doscon\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Windows</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Windows shell\"><code><span class=\"gp\">...\\&gt;</span> make.bat lint\n</code></pre></div></div></div>\n<p>The command prints any violations to the terminal in the form\n<code class=\"docutils literal notranslate\"><span class=\"pre\">path:line:</span> <span class=\"pre\">message</span></code>. If problems are encountered:</p>\n<ul class=\"simple\">\n<li><p>Read the message and fix the indicated issue (for example, remove trailing\nwhitespace, adjust backticks, or replace tabs with spaces).</p></li>\n<li><p>For long lines consider wrapping text onto new lines or breaking long inline\nlinks into named references. The custom line length check should already skip\ncommon false positives such as headings, tables and long links.</p></li>\n</ul>\n</section>\n</section>\n<section id=\"link-check\">\n<span id=\"documentation-link-check\"></span><h3>Contrôle des liens<a class=\"heading-anchor\" href=\"#link-check\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Links in documentation can become broken or changed such that they are no\nlonger the canonical link. Sphinx provides a builder that can check whether the\nlinks in the documentation are working. From the <code class=\"docutils literal notranslate\"><span class=\"pre\">docs</span></code> directory, run:</p>\n<div class=\"console\" data-console><div class=\"console-panel\" data-platform=\"unix\"><p class=\"console-label\" id=\"console-6-unix-label\">Linux / macOS</p><div class=\"code-block\" data-language=\"console\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Shell</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Shell code\"><code><span class=\"gp\">$ </span>make<span class=\"w\"> </span>linkcheck\n</code></pre></div>\n</div><div class=\"console-panel\" data-platform=\"windows\"><p class=\"console-label\" id=\"console-6-windows-label\">Windows</p><div class=\"code-block\" data-language=\"doscon\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Windows</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Windows shell\"><code><span class=\"gp\">...\\&gt;</span> make.bat linkcheck\n</code></pre></div></div></div>\n<p>Output is printed to the terminal, but can also be found in\n<code class=\"docutils literal notranslate\"><span class=\"pre\">_build/linkcheck/output.txt</span></code> and <code class=\"docutils literal notranslate\"><span class=\"pre\">_build/linkcheck/output.json</span></code>.</p>\n<aside class=\"admonition admonition-warning\" role=\"note\">\n<p class=\"admonition-title\">Avertissement</p>\n<p>The execution of the command requires an internet connection and takes\nseveral minutes to complete, because the command tests all the links\nthat are found in the documentation.</p>\n</aside>\n<p>Les lignes qui ont un statut de  « working » sont bonnes, celles qui sont marquées comme « unchecked » ou « ignored » n’ont pas été contrôlées soit car il n’est pas possible de le faire, soit parce qu’elles correspondent à des règles à ignorer dans la configuration.</p>\n<p>Les lignes qui sont dans l’état « broken » doivent être corrigées. Celles qui sont dans l’état « redirected » ont peut-être besoin d’être mises à jour pour pointer vers leur emplacement canonique, par exemple quand le protocole a passé de <code class=\"docutils literal notranslate\"><span class=\"pre\">http://</span></code> → <code class=\"docutils literal notranslate\"><span class=\"pre\">https://</span></code>. Dans certains cas, un lien redirigé n’a pas besoin d’être mis à jour, par exemple un alias qui pointe toujours vers la dernière version ou la version stable d’une documentation, comme <code class=\"docutils literal notranslate\"><span class=\"pre\">/en/stable/</span></code> → <code class=\"docutils literal notranslate\"><span class=\"pre\">/en/3.2/</span></code>.</p>\n</section>\n</section>\n<section id=\"writing-style\">\n<h2>Style d’écriture (anglais)<a class=\"heading-anchor\" href=\"#writing-style\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>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 :</p>\n<ul class=\"simple\">\n<li><p>he ou she… utilisez they.</p></li>\n<li><p>him ou her… utilisez them.</p></li>\n<li><p>his ou her… utilisez their.</p></li>\n<li><p>his ou hers… utilisez theirs.</p></li>\n<li><p>himself ou herself… utilisez themselves.</p></li>\n</ul>\n<p>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.</p>\n</section>\n<section id=\"commonly-used-terms\">\n<h2>Termes fréquemment utilisés<a class=\"heading-anchor\" href=\"#commonly-used-terms\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Voici quelques lignes directrices de style pour des termes fréquemment utilisés dans la documentation :</p>\n<ul class=\"simple\">\n<li><p><strong>Django</strong> – lorsque vous vous référez au cadriciel, toujours avec un D majuscule. Il n’est en minuscules que dans le code Python et dans le logo djangoproject.com.</p></li>\n<li><p><strong>email</strong> – sans trait d’union.</p></li>\n<li><p><strong>HTTP</strong> – la prononciation anglaise habituelle est « Éitch Ti Ti Pi », le terme doit donc être précédé de « an », et pas « a ».</p></li>\n<li><p><strong>MySQL</strong>, <strong>PostgreSQL</strong>, <strong>SQLite</strong></p></li>\n<li><p><strong>SQL</strong> – lorsqu’on se réfère à SQL, la prononciation attendue est « èsquiouèl » et non pas « sicouèl ». Ainsi, dans une phrase comme « Returns an SQL expression », « SQL » doit être précédé d’un « an » et non pas de « a ».</p></li>\n<li><p><strong>Python</strong> – mettre une majuscule quand c’est une référence au langage.</p></li>\n<li><p><strong>realize</strong>, <strong>customize</strong>, <strong>initialize</strong>, etc. – utiliser le suffixe américain « ize » et non « ise ».</p></li>\n<li><p><strong>subclass</strong> – en un mot sans trait d’union, que ce soit pour un verbe (« subclass that model ») ou un nom (« create a subclass »).</p></li>\n<li><p><strong>the web</strong>, <strong>web framework</strong> – sans majuscule.</p></li>\n<li><p><strong>website</strong> – en un seul mot, sans majuscule.</p></li>\n</ul>\n</section>\n<section id=\"django-specific-terminology\">\n<h2>Terminologie spécifique à Django<a class=\"heading-anchor\" href=\"#django-specific-terminology\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h2>\n<ul class=\"simple\">\n<li><p><strong>model</strong> – sans majuscule.</p></li>\n<li><p><strong>template</strong> – sans majuscule.</p></li>\n<li><p><strong>URLconf</strong> – trois premières lettres en majuscules, sans espace avant « conf ».</p></li>\n<li><p><strong>view</strong> – sans majuscule.</p></li>\n</ul>\n</section>\n<section id=\"guidelines-for-restructuredtext-files\">\n<h2>Directives pour les fichiers reStructuredText<a class=\"heading-anchor\" href=\"#guidelines-for-restructuredtext-files\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Ces lignes directrices régulent le format de notre documentation reST (reStructuredText) :</p>\n<ul>\n<li><p>Dans les titres de section, ne mettez en majuscules que les mots initiaux et les noms propres.</p></li>\n<li><p>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.</p></li>\n<li><p>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 :</p>\n<div class=\"code-block\" data-language=\"rst\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Rst</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Rst code\"><code>Add <span class=\"s\">``django.contrib.auth``</span> to your <span class=\"s\">``INSTALLED_APPS``</span>...\n</code></pre></div>\n<p>N’est pas aussi utile que :</p>\n<div class=\"code-block\" data-language=\"rst\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Rst</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Rst code\"><code>Add <span class=\"na\">:mod:</span><span class=\"nv\">`django.contrib.auth`</span> to your <span class=\"na\">:setting:</span><span class=\"nv\">`INSTALLED_APPS`</span>...\n</code></pre></div>\n<p>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.</p>\n<p>Il est possible de préfixer la cible par un <code class=\"docutils literal notranslate\"><span class=\"pre\">~</span></code> (caractère tilde) pour que seul le dernier composant du chemin soit affiché. Par exemple,  <code class=\"docutils literal notranslate\"><span class=\"pre\">:mod:`~django.contrib.auth`</span></code> affichera un lien sur le mot « auth » seul.</p>\n</li>\n<li><p>Utilisez <a class=\"reference external\" href=\"https://www.sphinx-doc.org/en/master/usage/extensions/intersphinx.html#module-sphinx.ext.intersphinx\" title=\"(disponible dans Sphinx v9.1.1)\"><code class=\"xref py py-mod docutils literal notranslate\"><span class=\"pre\">intersphinx</span></code></a> pour ajouter des références aux documentations de Python et de Sphinx.</p></li>\n<li><p>Ajoutez <code class=\"docutils literal notranslate\"><span class=\"pre\">..</span> <span class=\"pre\">code-block::</span> <span class=\"pre\">&lt;lang&gt;</span></code> 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 <code class=\"docutils literal notranslate\"><span class=\"pre\">::</span></code> (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 class=\"docutils literal notranslate\"><span class=\"pre\">..</span> <span class=\"pre\">code-block::</span> <span class=\"pre\">python</span></code>, la coloration syntaxique sera forcée même si la syntaxe n’est pas entièrement valable.</p></li>\n<li><p>Pour améliorer la lisibilité, utilisez <code class=\"docutils literal notranslate\"><span class=\"pre\">..</span> <span class=\"pre\">admonition::</span> <span class=\"pre\">Titre</span> <span class=\"pre\">descriptif</span></code> plutôt que <code class=\"docutils literal notranslate\"><span class=\"pre\">..</span> <span class=\"pre\">note::</span></code>. Utilisez ces boîtes de manière parcimonieuse.</p></li>\n<li><p>Utilisez ces styles d’en-têtes :</p>\n<div class=\"code-block\" data-language=\"rst\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Rst</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Rst code\"><code><span class=\"gh\">===</span>\n<span class=\"gh\">One</span>\n<span class=\"gh\">===</span>\n\n<span class=\"gh\">Two</span>\n<span class=\"gh\">===</span>\n\n<span class=\"gh\">Three</span>\n<span class=\"gh\">-----</span>\n\n<span class=\"gh\">Four</span>\n<span class=\"gh\">~~~~</span>\n\n<span class=\"gh\">Five</span>\n<span class=\"gh\">^^^^</span>\n</code></pre></div>\n</li>\n<li><p>Use <a class=\"reference external\" href=\"https://www.sphinx-doc.org/en/master/usage/restructuredtext/roles.html#role-rfc\" title=\"(disponible dans Sphinx v9.1.1)\"><code class=\"xref rst rst-role docutils literal notranslate\"><span class=\"pre\">:rfc:</span></code></a> to reference a Request for Comments (RFC) and\ntry to link to the relevant section if possible. For example, use\n<code class=\"docutils literal notranslate\"><span class=\"pre\">:rfc:`2324#section-2.3.2`</span></code> or\n<code class=\"docutils literal notranslate\"><span class=\"pre\">:rfc:`Custom</span> <span class=\"pre\">link</span> <span class=\"pre\">text</span> <span class=\"pre\">&lt;2324#section-2.3.2&gt;`</span></code>.</p></li>\n<li><p>Utilisez <a class=\"reference external\" href=\"https://www.sphinx-doc.org/en/master/usage/restructuredtext/roles.html#role-pep\" title=\"(disponible dans Sphinx v9.1.1)\"><code class=\"xref rst rst-role docutils literal notranslate\"><span class=\"pre\">:pep:</span></code></a> 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 <code class=\"docutils literal notranslate\"><span class=\"pre\">:pep:`20#easter-egg`</span></code> ou <code class=\"docutils literal notranslate\"><span class=\"pre\">:pep:`Easter</span> <span class=\"pre\">Egg</span> <span class=\"pre\">&lt;20#easter-egg&gt;`</span></code>.</p></li>\n<li><p>Utilisez <a class=\"reference external\" href=\"https://www.sphinx-doc.org/en/master/usage/restructuredtext/roles.html#role-mimetype\" title=\"(disponible dans Sphinx v9.1.1)\"><code class=\"xref rst rst-role docutils literal notranslate\"><span class=\"pre\">:mimetype:</span></code></a> pour vous référer à un type MIME sauf si la valeur est entre guillemets pour un exemple de code.</p></li>\n<li><p>Utilisez <a class=\"reference external\" href=\"https://www.sphinx-doc.org/en/master/usage/referencing.html#role-envvar\" title=\"(disponible dans Sphinx v9.1.1)\"><code class=\"xref rst rst-role docutils literal notranslate\"><span class=\"pre\">:envvar:</span></code></a> 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 <a class=\"reference external\" href=\"https://www.sphinx-doc.org/en/master/usage/domains/standard.html#directive-envvar\" title=\"(disponible dans Sphinx v9.1.1)\"><code class=\"xref rst rst-dir docutils literal notranslate\"><span class=\"pre\">..</span> <span class=\"pre\">envvar::</span></code></a>.</p></li>\n<li><p>Use <a class=\"reference external\" href=\"https://www.sphinx-doc.org/en/master/usage/restructuredtext/roles.html#role-cve\" title=\"(disponible dans Sphinx v9.1.1)\"><code class=\"xref rst rst-role docutils literal notranslate\"><span class=\"pre\">:cve:</span></code></a> to reference a Common Vulnerabilities and\nExposures (CVE) identifier. For example, use <code class=\"docutils literal notranslate\"><span class=\"pre\">:cve:`2019-14232`</span></code>.</p></li>\n<li><p>When documenting Python objects (classes, methods, attributes, etc.) using\n<a class=\"reference external\" href=\"https://www.sphinx-doc.org/en/master/usage/restructuredtext/basics.html\">Sphinx directives</a> such as <code class=\"docutils literal notranslate\"><span class=\"pre\">..</span> <span class=\"pre\">class::</span></code>, <code class=\"docutils literal notranslate\"><span class=\"pre\">..</span> <span class=\"pre\">method::</span></code>, and\n<code class=\"docutils literal notranslate\"><span class=\"pre\">..</span> <span class=\"pre\">attribute::</span></code>, all content must be properly indented to ensure correct\nrendering and to support features like automatic table of contents\ngeneration.</p>\n<p>Follow these rules:</p>\n<ul class=\"simple\">\n<li><p>The directive itself remains flush with the left margin (no indentation).</p></li>\n<li><p>All descriptive text under the directive must be indented by 4 spaces.</p></li>\n<li><p>Multi-line descriptions must keep the same indentation level.</p></li>\n<li><p>Nested directives (for example, methods inside a class) require an\nadditional 4 spaces of indentation to maintain hierarchy.</p></li>\n<li><p>Field lists (such as <code class=\"docutils literal notranslate\"><span class=\"pre\">:param:</span></code>, <code class=\"docutils literal notranslate\"><span class=\"pre\">:returns:</span></code>, etc.) must align with the\ndirective’s content level.</p></li>\n</ul>\n<p>Exemple :</p>\n<div class=\"code-block\" data-language=\"rst\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Rst</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Rst code\"><code><span class=\"p\">..</span> <span class=\"ow\">class</span><span class=\"p\">::</span> MyClass\n\n    A brief description of the class.\n\n<span class=\"p\">    ..</span> <span class=\"ow\">method</span><span class=\"p\">::</span> my_method(arg1, arg2)\n\n        Method description.\n\n        <span class=\"nc\">:param arg1:</span> Description of the first parameter\n        <span class=\"nc\">:param arg2:</span> Description of the second parameter\n\n<span class=\"p\">    ..</span> <span class=\"ow\">attribute</span><span class=\"p\">::</span> my_attribute\n\n        Attribute description.\n</code></pre></div>\n</li>\n</ul>\n</section>\n<section id=\"django-specific-markup\">\n<h2>Balisage spécifique à Django<a class=\"heading-anchor\" href=\"#django-specific-markup\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>En plus du <a class=\"reference external\" href=\"https://www.sphinx-doc.org/en/master/usage/restructuredtext/index.html#rst-index\" title=\"(disponible dans Sphinx v9.1.1)\"><span class=\"xref std std-ref\">balisage propre à Sphinx</span></a>, la documentation de Django définit quelques unités descriptives supplémentaires :</p>\n<ul>\n<li><p>Réglages :</p>\n<div class=\"code-block\" data-language=\"rst\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Rst</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Rst code\"><code><span class=\"p\">..</span> <span class=\"ow\">setting</span><span class=\"p\">::</span> INSTALLED_APPS\n</code></pre></div>\n<p>Pour faire un lien vers un réglage, utilisez <code class=\"docutils literal notranslate\"><span class=\"pre\">:setting:`INSTALLED_APPS`</span></code>.</p>\n</li>\n<li><p>Balises de gabarit :</p>\n<div class=\"code-block\" data-language=\"rst\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Rst</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Rst code\"><code><span class=\"p\">..</span> <span class=\"ow\">templatetag</span><span class=\"p\">::</span> regroup\n</code></pre></div>\n<p>Pour faire le lien, utilisez <code class=\"docutils literal notranslate\"><span class=\"pre\">:ttag:`regroup`</span></code>.</p>\n</li>\n<li><p>Filtres de gabarit :</p>\n<div class=\"code-block\" data-language=\"rst\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Rst</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Rst code\"><code><span class=\"p\">..</span> <span class=\"ow\">templatefilter</span><span class=\"p\">::</span> linebreaksbr\n</code></pre></div>\n<p>Pour faire le lien, utilisez <code class=\"docutils literal notranslate\"><span class=\"pre\">:tfilter:`linebreaksbr`</span></code>.</p>\n</li>\n<li><p>Requêtes de champs (par ex. <code class=\"docutils literal notranslate\"><span class=\"pre\">Foo.objects.filter(bar__exact=qqchose)</span></code>):</p>\n<div class=\"code-block\" data-language=\"rst\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Rst</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Rst code\"><code><span class=\"p\">..</span> <span class=\"ow\">fieldlookup</span><span class=\"p\">::</span> exact\n</code></pre></div>\n<p>Pour faire le lien, utilisez <code class=\"docutils literal notranslate\"><span class=\"pre\">:lookup:`exact`</span></code>.</p>\n</li>\n<li><p>Commandes <code class=\"docutils literal notranslate\"><span class=\"pre\">django-admin</span></code>:</p>\n<div class=\"code-block\" data-language=\"rst\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Rst</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Rst code\"><code><span class=\"p\">..</span> <span class=\"ow\">django-admin</span><span class=\"p\">::</span> migrate\n</code></pre></div>\n<p>Pour faire le lien, utilisez <code class=\"docutils literal notranslate\"><span class=\"pre\">:djadmin:`migrate`</span></code>.</p>\n</li>\n<li><p>Options de ligne de commande <code class=\"docutils literal notranslate\"><span class=\"pre\">django-admin</span></code>:</p>\n<div class=\"code-block\" data-language=\"rst\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Rst</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Rst code\"><code><span class=\"p\">..</span> <span class=\"ow\">django-admin-option</span><span class=\"p\">::</span> --traceback\n</code></pre></div>\n<p>Pour faire le lien, utilisez <code class=\"docutils literal notranslate\"><span class=\"pre\">:option:`nom_commande</span> <span class=\"pre\">--traceback`</span></code> (ou omettez <code class=\"docutils literal notranslate\"><span class=\"pre\">nom_commande</span></code> pour les options partagées par toutes les commandes comme <code class=\"docutils literal notranslate\"><span class=\"pre\">--verbosity</span></code>).</p>\n</li>\n<li><p>Liens vers les tickets Trac (typiquement réservés pour les notes de publication des versions correctives) :</p>\n<div class=\"code-block\" data-language=\"rst\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Rst</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Rst code\"><code><span class=\"na\">:ticket:</span><span class=\"nv\">`12345`</span>\n</code></pre></div>\n</li>\n</ul>\n<p>La documentation de Django utilise une directive <code class=\"docutils literal notranslate\"><span class=\"pre\">console</span></code> personnalisée pour la documentation des exemples en ligne de commande impliquant <code class=\"docutils literal notranslate\"><span class=\"pre\">django-admin</span></code>, <code class=\"docutils literal notranslate\"><span class=\"pre\">manage.py</span></code>, <code class=\"docutils literal notranslate\"><span class=\"pre\">python</span></code>, 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.</p>\n<p>Par exemple, vous pouvez remplacer ce fragment :</p>\n<div class=\"code-block\" data-language=\"rst\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Rst</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Rst code\"><code>use this command:\n\n<span class=\"p\">..</span> <span class=\"ow\">code-block</span><span class=\"p\">::</span> console\n\n    $ python manage.py shell\n</code></pre></div>\n<p>par celui-ci :</p>\n<div class=\"code-block\" data-language=\"rst\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Rst</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Rst code\"><code>use this command:\n\n<span class=\"p\">..</span> <span class=\"ow\">console</span><span class=\"p\">::</span>\n\n    $ python manage.py shell\n</code></pre></div>\n<p>Remarquez deux choses :</p>\n<ul class=\"simple\">\n<li><p>Vous allez généralement remplacer les occurrences de la directive <code class=\"docutils literal notranslate\"><span class=\"pre\">..</span> <span class=\"pre\">code-block::</span> <span class=\"pre\">console</span></code>.</p></li>\n<li><p>Vous n’avez pas besoin de modifier le contenu effectif de l’exemple de code. Vous l’écrivez toujours en imaginant un environnement de type Unix (c’est-à-dire un symbole d’invite <code class=\"docutils literal notranslate\"><span class=\"pre\">'$'</span></code>, <code class=\"docutils literal notranslate\"><span class=\"pre\">'/'</span></code> comme séparateur de chemins de systèmes de fichiers, etc.)</p></li>\n</ul>\n<p>L’exemple ci-dessus va produire un bloc d’exemple de code avec deux onglets. Le premier contiendra :</p>\n<div class=\"code-block\" data-language=\"console\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Shell</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Shell code\"><code><span class=\"gp\">$ </span>python<span class=\"w\"> </span>manage.py<span class=\"w\"> </span>shell\n</code></pre></div>\n<p>(aucun changement par rapport au rendu <code class=\"docutils literal notranslate\"><span class=\"pre\">..</span> <span class=\"pre\">code-block::</span> <span class=\"pre\">console</span></code> standard).</p>\n<p>Le second contiendra :</p>\n<div class=\"code-block\" data-language=\"doscon\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Windows</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Windows code\"><code><span class=\"gp\">...\\&gt;</span> py manage.py shell\n</code></pre></div>\n</section>\n<section id=\"documenting-new-features\">\n<span id=\"id5\"></span><h2>Documentation de nouvelles fonctionnalités<a class=\"heading-anchor\" href=\"#documenting-new-features\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Notre politique pour les nouvelles fonctionnalités est la suivante :</p>\n<blockquote>\n<div><p>Toute documentation pour de nouvelles fonctionnalités doit être écrite de manière à ce que les fonctionnalités uniquement disponibles pour la version de développement de Django soient clairement identifiées. 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.</p>\n</div></blockquote>\n<p>La méthode préférée pour marquer les nouvelles fonctionnalités est de précéder leur documentation par « <code class=\"docutils literal notranslate\"><span class=\"pre\">..</span> <span class=\"pre\">versionadded::</span> <span class=\"pre\">X.Y</span></code> », suivi d’une ligne vierge obligatoire et d’une description facultative (avec indentation).</p>\n<p>Les améliorations générales ou d’autres changements dans l’API qui doivent être mis en évidence utilisent la directive « <code class=\"docutils literal notranslate\"><span class=\"pre\">..</span> <span class=\"pre\">versionchanged::</span> <span class=\"pre\">X.Y</span></code> » (au même format que la directive <code class=\"docutils literal notranslate\"><span class=\"pre\">versionadded</span></code> du paragraphe précédent).</p>\n<p>Ces blocs <code class=\"docutils literal notranslate\"><span class=\"pre\">versionadded</span></code> et <code class=\"docutils literal notranslate\"><span class=\"pre\">versionchanged</span></code> 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 :</p>\n<div class=\"code-block\" data-language=\"rst\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Rst</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Rst code\"><code><span class=\"p\">..</span> <span class=\"ow\">class</span><span class=\"p\">::</span> Author(first_name, last_name, middle_name=None)\n\n    A person who writes books.\n\n    <span class=\"s\">``first_name``</span> is ...\n\n<span class=\"c\">    ...</span>\n\n<span class=\"c\">    ``middle_name`` is ...</span>\n\n<span class=\"c\">    .. versionchanged:: A.B</span>\n\n<span class=\"c\">        The ``middle_name`` argument was added.</span>\n</code></pre></div>\n<p>Placez les annotations pour les modifications au bas de la section, et non pas au-dessus.</p>\n<p>De même, évitez de faire référence à une version spécifique de Django en dehors des blocs <code class=\"docutils literal notranslate\"><span class=\"pre\">versionadded</span></code> et <code class=\"docutils literal notranslate\"><span class=\"pre\">versionchanged</span></code>. 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 ».</p>\n<p>Si une fonction, un attribut, etc. a été ajouté, il est aussi admis d’utiliser une annotation <code class=\"docutils literal notranslate\"><span class=\"pre\">versionadded</span></code> comme ceci :</p>\n<div class=\"code-block\" data-language=\"rst\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Rst</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Rst code\"><code><span class=\"p\">..</span> <span class=\"ow\">attribute</span><span class=\"p\">::</span> Author.middle_name\n\n<span class=\"p\">    ..</span> <span class=\"ow\">versionadded</span><span class=\"p\">::</span> A.B\n\n    An author&#39;s middle name.\n</code></pre></div>\n<p>Nous pouvons enlever l’annotation <code class=\"docutils literal notranslate\"><span class=\"pre\">..</span> <span class=\"pre\">versionadded::</span> <span class=\"pre\">A.B</span></code> sans aucun changement d’indentation lorsque ce sera le bon moment.</p>\n</section>\n<section id=\"minimizing-images\">\n<h2>Minimiser les images<a class=\"heading-anchor\" href=\"#minimizing-images\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Optimisez la taille de compression des images quand c’est possible, pour les fichiers PBG, utilisez OptiPNG et <code class=\"docutils literal notranslate\"><span class=\"pre\">advpng</span></code> de AdvanceCOMP :</p>\n<div class=\"console\" data-console><div class=\"console-panel\" data-platform=\"unix\"><p class=\"console-label\" id=\"console-7-unix-label\">Linux / macOS</p><div class=\"code-block\" data-language=\"console\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Shell</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Shell code\"><code><span class=\"gp\">$ </span><span class=\"nb\">cd</span><span class=\"w\"> </span>docs\n<span class=\"gp\">$ </span>optipng<span class=\"w\"> </span>-o7<span class=\"w\"> </span>-zm1-9<span class=\"w\"> </span>-i0<span class=\"w\"> </span>-strip<span class=\"w\"> </span>all<span class=\"w\"> </span><span class=\"sb\">`</span>find<span class=\"w\"> </span>.<span class=\"w\"> </span>-type<span class=\"w\"> </span>f<span class=\"w\"> </span>-not<span class=\"w\"> </span>-path<span class=\"w\"> </span><span class=\"s2\">&quot;./_build/*&quot;</span><span class=\"w\"> </span>-name<span class=\"w\"> </span><span class=\"s2\">&quot;*.png&quot;</span><span class=\"sb\">`</span>\n<span class=\"gp\">$ </span>advpng<span class=\"w\"> </span>-z4<span class=\"w\"> </span><span class=\"sb\">`</span>find<span class=\"w\"> </span>.<span class=\"w\"> </span>-type<span class=\"w\"> </span>f<span class=\"w\"> </span>-not<span class=\"w\"> </span>-path<span class=\"w\"> </span><span class=\"s2\">&quot;./_build/*&quot;</span><span class=\"w\"> </span>-name<span class=\"w\"> </span><span class=\"s2\">&quot;*.png&quot;</span><span class=\"sb\">`</span>\n</code></pre></div>\n</div><div class=\"console-panel\" data-platform=\"windows\"><p class=\"console-label\" id=\"console-7-windows-label\">Windows</p><div class=\"code-block\" data-language=\"doscon\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Windows</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Windows shell\"><code><span class=\"gp\">...\\&gt;</span> <span class=\"k\">cd</span> docs\n<span class=\"gp\">...\\&gt;</span> optipng -o7 -zm1-9 -i0 -strip all `find . -type f -not -path <span class=\"s2\">&quot;.\\_build\\*&quot;</span> -name <span class=\"s2\">&quot;*.png&quot;</span>`\n<span class=\"gp\">...\\&gt;</span> advpng -z4 `find . -type f -not -path <span class=\"s2\">&quot;.\\_build\\*&quot;</span> -name <span class=\"s2\">&quot;*.png&quot;</span>`\n</code></pre></div></div></div>\n<p>Cet exemple est basé sur la version 0.7.5 de OptiPNG. Les versions plus anciennes peuvent se plaindre que l’option <code class=\"docutils literal notranslate\"><span class=\"pre\">-strip</span> <span class=\"pre\">all</span></code> perd des données.</p>\n</section>\n<section id=\"an-example\">\n<h2>Un exemple<a class=\"heading-anchor\" href=\"#an-example\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Pour un exemple rapide sur la manière dont tout s’enchaîne, considérez l’exemple hypothétique suivant :</p>\n<ul>\n<li><p>Tout d’abord, la disposition générale du document <code class=\"docutils literal notranslate\"><span class=\"pre\">ref/settings.txt</span></code> pourrait ressembler à ceci :</p>\n<div class=\"code-block\" data-language=\"rst\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Rst</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Rst code\"><code><span class=\"gh\">========</span>\n<span class=\"gh\">Settings</span>\n<span class=\"gh\">========</span>\n\n<span class=\"c\">...</span>\n\n<span class=\"p\">..</span> <span class=\"nt\">_available-settings:</span>\n\n<span class=\"gh\">Available settings</span>\n<span class=\"gh\">==================</span>\n\n<span class=\"c\">...</span>\n\n<span class=\"p\">..</span> <span class=\"nt\">_deprecated-settings:</span>\n\n<span class=\"gh\">Deprecated settings</span>\n<span class=\"gh\">===================</span>\n\n<span class=\"c\">...</span>\n</code></pre></div>\n</li>\n<li><p>Ensuite, le document <code class=\"docutils literal notranslate\"><span class=\"pre\">topics/settings.txt</span></code> pourrait contenir quelque chose comme :</p>\n<div class=\"code-block\" data-language=\"rst\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Rst</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Rst code\"><code>You can access a :ref:`listing of all available settings\n<span class=\"nt\">&lt;available-settings&gt;</span>`. For a list of deprecated settings see\n<span class=\"na\">:ref:</span><span class=\"nv\">`deprecated-settings`</span>.\n\nYou can find both in the :doc:`settings reference document\n<span class=\"nt\">&lt;/ref/settings&gt;</span>`.\n</code></pre></div>\n<p>Nous utilisons l’élément de référence croisée de Sphinx <a class=\"reference external\" href=\"https://www.sphinx-doc.org/en/master/usage/referencing.html#role-doc\" title=\"(disponible dans Sphinx v9.1.1)\"><code class=\"xref rst rst-role docutils literal notranslate\"><span class=\"pre\">doc</span></code></a> lorsque nous ajoutons un lien vers un autre document dans son entier et l’élément <a class=\"reference external\" href=\"https://www.sphinx-doc.org/en/master/usage/referencing.html#role-ref\" title=\"(disponible dans Sphinx v9.1.1)\"><code class=\"xref rst rst-role docutils literal notranslate\"><span class=\"pre\">ref</span></code></a> lorsque nous ajoutons un lien vers un emplacement spécifique dans un document.</p>\n</li>\n<li><p>Puis, voyez comment les réglages sont annotés :</p>\n<div class=\"code-block\" data-language=\"rst\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Rst</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Rst code\"><code><span class=\"p\">..</span> <span class=\"ow\">setting</span><span class=\"p\">::</span> ADMINS\n\n<span class=\"gh\">ADMINS</span>\n<span class=\"gh\">======</span>\n\nDefault: <span class=\"s\">``[]``</span> (Empty list)\n\nA list of all the people who get code error notifications...\n</code></pre></div>\n<p>Ceci balise l’en-tête suivante comme la cible « canonique » du réglage <code class=\"docutils literal notranslate\"><span class=\"pre\">ADMINS</span></code>. Cela signifie que lors de chaque mention de <code class=\"docutils literal notranslate\"><span class=\"pre\">ADMINS</span></code>, on peut y faire référence avec <code class=\"docutils literal notranslate\"><span class=\"pre\">:setting:`ADMINS`</span></code>.</p>\n</li>\n</ul>\n<p>C’est grosso modo ainsi que le tout fonctionne.</p>\n</section>\n<section id=\"translating-documentation\">\n<h2>Traduction de la documentation<a class=\"heading-anchor\" href=\"#translating-documentation\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Consultez <a class=\"reference internal\" href=\"/fr/6.0/internals/contributing/localizing/#translating-documentation\"><span class=\"std std-ref\">Traduction de la documentation de Django</span></a> si vous souhaitez aider à traduire la documentation dans une autre langue.</p>\n</section>\n<section id=\"django-admin-man-page\">\n<span id=\"django-admin-manpage\"></span><h2>Page de manuel <code class=\"docutils literal notranslate\"><span class=\"pre\">django-admin</span></code><a class=\"heading-anchor\" href=\"#django-admin-man-page\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Sphinx peut générer une page de manuel pour la commande <a class=\"reference internal\" href=\"/fr/6.0/ref/django-admin/\"><span class=\"doc\">django-admin</span></a>. Ceci est configuré dans <code class=\"docutils literal notranslate\"><span class=\"pre\">docs/conf.py</span></code>. 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 <code class=\"docutils literal notranslate\"><span class=\"pre\">docs/man/django-admin.1</span></code>. 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.</p>\n<p>To generate an updated version of the man page, in the <code class=\"docutils literal notranslate\"><span class=\"pre\">docs</span></code> directory, run:</p>\n<div class=\"console\" data-console><div class=\"console-panel\" data-platform=\"unix\"><p class=\"console-label\" id=\"console-8-unix-label\">Linux / macOS</p><div class=\"code-block\" data-language=\"console\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Shell</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Shell code\"><code><span class=\"gp\">$ </span>make<span class=\"w\"> </span>man\n</code></pre></div>\n</div><div class=\"console-panel\" data-platform=\"windows\"><p class=\"console-label\" id=\"console-8-windows-label\">Windows</p><div class=\"code-block\" data-language=\"doscon\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Windows</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Windows shell\"><code><span class=\"gp\">...\\&gt;</span> make.bat man\n</code></pre></div></div></div>\n<p>The new man page will be written in <code class=\"docutils literal notranslate\"><span class=\"pre\">docs/_build/man/django-admin.1</span></code>.</p>\n</section>","rootId":"writing-documentation","toc":[{"title":"Le processus de documentation de Django","anchor":"the-django-documentation-process","children":[]},{"title":"Organisation de la documentation","anchor":"how-the-documentation-is-organized","children":[]},{"title":"Comment débuter une contribution à la documentation","anchor":"how-to-start-contributing-documentation","children":[{"title":"Création d’une copie locale du dépôt Django","anchor":"clone-the-django-repository-to-your-local-machine","children":[]},{"title":"Configurer un environnement virtuel et installer les dépendances","anchor":"set-up-a-virtual-environment-and-install-dependencies","children":[]},{"title":"Construction locale de la documentation","anchor":"build-the-documentation-locally","children":[]},{"title":"Édition de la documentation","anchor":"making-edits-to-the-documentation","children":[]},{"title":"Documentation quality checks","anchor":"documentation-quality-checks","children":[{"title":"Correction orthographique","anchor":"spelling-check","children":[]},{"title":"Code block format check","anchor":"code-block-format-check","children":[]},{"title":"Documentation lint check","anchor":"documentation-lint-check","children":[]}]},{"title":"Contrôle des liens","anchor":"link-check","children":[]}]},{"title":"Style d’écriture (anglais)","anchor":"writing-style","children":[]},{"title":"Termes fréquemment utilisés","anchor":"commonly-used-terms","children":[]},{"title":"Terminologie spécifique à Django","anchor":"django-specific-terminology","children":[]},{"title":"Directives pour les fichiers reStructuredText","anchor":"guidelines-for-restructuredtext-files","children":[]},{"title":"Balisage spécifique à Django","anchor":"django-specific-markup","children":[]},{"title":"Documentation de nouvelles fonctionnalités","anchor":"documenting-new-features","children":[]},{"title":"Minimiser les images","anchor":"minimizing-images","children":[]},{"title":"Un exemple","anchor":"an-example","children":[]},{"title":"Traduction de la documentation","anchor":"translating-documentation","children":[]},{"title":"Page de manuel django-admin","anchor":"django-admin-man-page","children":[]}],"breadcrumbs":[{"docname":"internals/index","title":"Fonctionnement interne du projet Django","url":"/fr/6.0/internals/"},{"docname":"internals/contributing/index","title":"Contribuer à Django","url":"/fr/6.0/internals/contributing/"}],"prev":{"docname":"internals/contributing/committing-code","title":"Commit de code","url":"/fr/6.0/internals/contributing/committing-code/"},"next":{"docname":"internals/contributing/localizing","title":"Traduction de Django","url":"/fr/6.0/internals/contributing/localizing/"},"formats":{"html":"/fr/6.0/internals/contributing/writing-documentation/","markdown":"/fr/6.0/internals/contributing/writing-documentation.md","json":"/fr/6.0/internals/contributing/writing-documentation.json"},"source":"https://github.com/django/django/blob/stable/6.0.x/docs/internals/contributing/writing-documentation.txt","official":"https://docs.djangoproject.com/fr/6.0/internals/contributing/writing-documentation/","inVersions":["6.1","6.0","5.2","5.1","5.0","4.2","4.1","4.0","3.2","3.1","3.0","2.2","2.1","2.0","1.11","1.10","1.9"],"inLocales":["en","sv","zh-hans","ga","fr","ja","id","it","pt-br","ko","es","el","pl"]}