{"title":"L’application de gestion des fichiers statiques (staticfiles)","version":"4.0","locale":"fr","docname":"ref/contrib/staticfiles","url":"/fr/4.0/ref/contrib/staticfiles/","canonical":"https://djangodocs.dev/fr/4.0/ref/contrib/staticfiles/","summary":"django.contrib.staticfiles recueille les fichiers statiques à partir de chacune des applications (et de tous les autres endroits que vous spécifiez) en un…","html":"<span id=\"the-staticfiles-app\"></span><h1>L’application de gestion des fichiers statiques (<code class=\"docutils literal notranslate\">staticfiles</code>)<a class=\"heading-anchor\" href=\"#module-django.contrib.staticfiles\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h1>\n<p><code class=\"docutils literal notranslate\">django.contrib.staticfiles</code> recueille les fichiers statiques à partir de chacune des applications (et de tous les autres endroits que vous spécifiez) en un seul endroit qui peut facilement être utilisé en production.</p>\n<aside class=\"admonition admonition-seealso\" role=\"note\">\n<p class=\"admonition-title\">Voir aussi</p>\n<p>Pour une introduction à l’application et quelques exemples d’utilisation des fichiers statiques, voir  <a class=\"reference internal\" href=\"/fr/4.0/howto/static-files/\"><span class=\"doc\">Gestion des fichiers statiques (par ex. images, JavaScript, CSS)</span></a>. Pour obtenir des instructions sur le déploiement des fichiers statiques, voir <a class=\"reference internal\" href=\"/fr/4.0/howto/static-files/deployment/\"><span class=\"doc\">Déploiement des fichiers statiques</span></a>.</p>\n</aside>\n<section id=\"settings\">\n<span id=\"staticfiles-settings\"></span><h2>Réglages<a class=\"heading-anchor\" href=\"#settings\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Voir <a class=\"reference internal\" href=\"/fr/4.0/ref/settings/#settings-staticfiles\"><span class=\"std std-ref\">réglages de staticfiles</span></a> pour plus de détails sur les réglages suivants :</p>\n<ul class=\"simple\">\n<li><p><a class=\"reference internal\" href=\"/fr/4.0/ref/settings/#std-setting-STATIC_ROOT\"><code class=\"xref std std-setting docutils literal notranslate\">STATIC_ROOT</code></a></p></li>\n<li><p><a class=\"reference internal\" href=\"/fr/4.0/ref/settings/#std-setting-STATIC_URL\"><code class=\"xref std std-setting docutils literal notranslate\">STATIC_URL</code></a></p></li>\n<li><p><a class=\"reference internal\" href=\"/fr/4.0/ref/settings/#std-setting-STATICFILES_DIRS\"><code class=\"xref std std-setting docutils literal notranslate\">STATICFILES_DIRS</code></a></p></li>\n<li><p><a class=\"reference internal\" href=\"/fr/4.0/ref/settings/#std-setting-STATICFILES_STORAGE\"><code class=\"xref std std-setting docutils literal notranslate\">STATICFILES_STORAGE</code></a></p></li>\n<li><p><a class=\"reference internal\" href=\"/fr/4.0/ref/settings/#std-setting-STATICFILES_FINDERS\"><code class=\"xref std std-setting docutils literal notranslate\">STATICFILES_FINDERS</code></a></p></li>\n</ul>\n</section>\n<section id=\"management-commands\">\n<h2>Commandes d’administration<a class=\"heading-anchor\" href=\"#management-commands\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h2>\n<p><code class=\"docutils literal notranslate\">django.contrib.staticfiles</code> propose trois commandes d’administration.</p>\n<section id=\"collectstatic\">\n<h3><code class=\"docutils literal notranslate\">collectstatic</code><a class=\"heading-anchor\" href=\"#collectstatic\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"std django-admin\">\n<dt class=\"sig sig-object std\" id=\"django-admin-collectstatic\">\n<span class=\"sig-name descname\">django-admin collectstatic</span><a class=\"heading-anchor\" href=\"#django-admin-collectstatic\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Recueille les fichiers statiques dans le répertoire <a class=\"reference internal\" href=\"/fr/4.0/ref/settings/#std-setting-STATIC_ROOT\"><code class=\"xref std std-setting docutils literal notranslate\">STATIC_ROOT</code></a>.</p>\n<p>Lorsque deux fichiers ont le même nom, le problème est résolu par défaut d’une façon similaire à la façon dont fonctionne la résolution des gabarits : le premier fichier trouvé est utilisé. En cas d’incertitude, la commande <a class=\"reference internal\" href=\"#django-admin-findstatic\"><code class=\"xref std std-djadmin docutils literal notranslate\">findstatic</code></a> peut vous montrer quels sont les fichiers trouvés.</p>\n<p>Lors des prochains lancements de <code class=\"docutils literal notranslate\">collectstatic</code> (si <code class=\"docutils literal notranslate\">STATIC_ROOT</code> n’est pas vide), les fichiers ne sont copiés que si leur date de modification est plus récente que la date de modification du fichier dans <code class=\"docutils literal notranslate\">STATIC_ROOT</code>. Ainsi, si vous supprimez une application de <a class=\"reference internal\" href=\"/fr/4.0/ref/settings/#std-setting-INSTALLED_APPS\"><code class=\"xref std std-setting docutils literal notranslate\">INSTALLED_APPS</code></a>, il est recommandé d’utiliser l’option <a class=\"reference internal\" href=\"#cmdoption-collectstatic-clear\"><code class=\"xref std std-option docutils literal notranslate\">collectstatic --clear</code></a> afin de supprimer les fichiers statiques obsolètes.</p>\n<p>La recherche des fichiers utilise le réglage <a class=\"reference internal\" href=\"/fr/4.0/ref/settings/#std-setting-STATICFILES_FINDERS\"><code class=\"xref std std-setting docutils literal notranslate\">STATICFILES_FINDERS</code></a>. Par défaut, Django parcourt tous les emplacements définis dans <a class=\"reference internal\" href=\"/fr/4.0/ref/settings/#std-setting-STATICFILES_DIRS\"><code class=\"xref std std-setting docutils literal notranslate\">STATICFILES_DIRS</code></a> et dans le répertoire <code class=\"docutils literal notranslate\">'static'</code> des applications figurant dans le réglage <a class=\"reference internal\" href=\"/fr/4.0/ref/settings/#std-setting-INSTALLED_APPS\"><code class=\"xref std std-setting docutils literal notranslate\">INSTALLED_APPS</code></a> .</p>\n<p>La commande d’administration <a class=\"reference internal\" href=\"#django-admin-collectstatic\"><code class=\"xref std std-djadmin docutils literal notranslate\">collectstatic</code></a> appelle la méthode <a class=\"reference internal\" href=\"#django.contrib.staticfiles.storage.StaticFilesStorage.post_process\" title=\"django.contrib.staticfiles.storage.StaticFilesStorage.post_process\"><code class=\"xref py py-meth docutils literal notranslate\">post_process()</code></a> du système de stockage <a class=\"reference internal\" href=\"/fr/4.0/ref/settings/#std-setting-STATICFILES_STORAGE\"><code class=\"xref std std-setting docutils literal notranslate\">STATICFILES_STORAGE</code></a> après chacune de ses exécutions et lui passe une liste des chemins qu’elle a trouvés. La méthode reçoit également toutes les options de ligne de commande de <a class=\"reference internal\" href=\"#django-admin-collectstatic\"><code class=\"xref std std-djadmin docutils literal notranslate\">collectstatic</code></a>. C’est utilisé par la classe <a class=\"reference internal\" href=\"#django.contrib.staticfiles.storage.ManifestStaticFilesStorage\" title=\"django.contrib.staticfiles.storage.ManifestStaticFilesStorage\"><code class=\"xref py py-class docutils literal notranslate\">ManifestStaticFilesStorage</code></a> par défaut.</p>\n<p>Par défaut, les fichiers collectés reçoivent les autorisations du réglage <a class=\"reference internal\" href=\"/fr/4.0/ref/settings/#std-setting-FILE_UPLOAD_PERMISSIONS\"><code class=\"xref std std-setting docutils literal notranslate\">FILE_UPLOAD_PERMISSIONS</code></a>  et les répertoires reçoivent les autorisations de <a class=\"reference internal\" href=\"/fr/4.0/ref/settings/#std-setting-FILE_UPLOAD_DIRECTORY_PERMISSIONS\"><code class=\"xref std std-setting docutils literal notranslate\">FILE_UPLOAD_DIRECTORY_PERMISSIONS</code></a>. Si vous souhaitez des autorisations différentes pour ces fichiers ou répertoires, vous pouvez créer une sous-classe des <a class=\"reference internal\" href=\"#staticfiles-storages\"><span class=\"std std-ref\">classes de stockage des fichiers statiques</span></a> et spécifier les paramètres <code class=\"docutils literal notranslate\">file_permissions_mode</code> ou <code class=\"docutils literal notranslate\">directory_permissions_mode</code>. Par exemple :</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</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=\"Code code\"><code><span class=\"kn\">from</span> <span class=\"nn\">django.contrib.staticfiles</span> <span class=\"kn\">import</span> storage\n\n<span class=\"k\">class</span> <span class=\"nc\">MyStaticFilesStorage</span><span class=\"p\">(</span>storage<span class=\"o\">.</span>StaticFilesStorage<span class=\"p\">):</span>\n    <span class=\"k\">def</span> <span class=\"fm\">__init__</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"p\">,</span> <span class=\"o\">*</span>args<span class=\"p\">,</span> <span class=\"o\">**</span>kwargs<span class=\"p\">):</span>\n        kwargs<span class=\"p\">[</span><span class=\"s1\">&#39;file_permissions_mode&#39;</span><span class=\"p\">]</span> <span class=\"o\">=</span> <span class=\"mo\">0o640</span>\n        kwargs<span class=\"p\">[</span><span class=\"s1\">&#39;directory_permissions_mode&#39;</span><span class=\"p\">]</span> <span class=\"o\">=</span> <span class=\"mo\">0o760</span>\n        <span class=\"nb\">super</span><span class=\"p\">()</span><span class=\"o\">.</span><span class=\"fm\">__init__</span><span class=\"p\">(</span><span class=\"o\">*</span>args<span class=\"p\">,</span> <span class=\"o\">**</span>kwargs<span class=\"p\">)</span>\n</code></pre></div>\n<p>Définissez ensuite le réglage <a class=\"reference internal\" href=\"/fr/4.0/ref/settings/#std-setting-STATICFILES_STORAGE\"><code class=\"xref std std-setting docutils literal notranslate\">STATICFILES_STORAGE</code></a> à <code class=\"docutils literal notranslate\">'chemin.vers.MyStaticFilesStorage'</code>.</p>\n<p>Certaines options couramment utilisées sont :</p>\n<dl class=\"django-admin-option\">\n<dt class=\"sig sig-object\" id=\"cmdoption-collectstatic-noinput\">\n<span id=\"cmdoption-collectstatic-no-input\"></span><span class=\"sig-name descname\">--noinput</span><span class=\"sig-prename descclassname\"></span><span class=\"sig-prename descclassname\">, </span><span class=\"sig-name descname\">--no-input</span><span class=\"sig-prename descclassname\"></span><a class=\"heading-anchor\" href=\"#cmdoption-collectstatic-noinput\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Ne pose AUCUNE question à l’utilisateur.</p>\n</dd></dl>\n\n<dl class=\"django-admin-option\">\n<dt class=\"sig sig-object\" id=\"cmdoption-collectstatic-ignore\">\n<span id=\"cmdoption-collectstatic-i\"></span><span class=\"sig-name descname\">--ignore</span><span class=\"sig-prename descclassname\"> PATTERN</span><span class=\"sig-prename descclassname\">, </span><span class=\"sig-name descname\">-i</span><span class=\"sig-prename descclassname\"> PATTERN</span><a class=\"heading-anchor\" href=\"#cmdoption-collectstatic-ignore\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Ignore les fichiers, les répertoires ou les chemins correspondant à ce motif de style « glob ». Peut être utilisé plusieurs fois pour ignorer plusieurs chemins. Si vous indiquez un chemin, utilisez toujours des barres obliques normales, même sur Windows.</p>\n</dd></dl>\n\n<dl class=\"django-admin-option\">\n<dt class=\"sig sig-object\" id=\"cmdoption-collectstatic-dry-run\">\n<span id=\"cmdoption-collectstatic-n\"></span><span class=\"sig-name descname\">--dry-run</span><span class=\"sig-prename descclassname\"></span><span class=\"sig-prename descclassname\">, </span><span class=\"sig-name descname\">-n</span><span class=\"sig-prename descclassname\"></span><a class=\"heading-anchor\" href=\"#cmdoption-collectstatic-dry-run\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Exécute la commande normalement, mais sans toucher réellement au système de fichiers.</p>\n</dd></dl>\n\n<dl class=\"django-admin-option\">\n<dt class=\"sig sig-object\" id=\"cmdoption-collectstatic-clear\">\n<span id=\"cmdoption-collectstatic-c\"></span><span class=\"sig-name descname\">--clear</span><span class=\"sig-prename descclassname\"></span><span class=\"sig-prename descclassname\">, </span><span class=\"sig-name descname\">-c</span><span class=\"sig-prename descclassname\"></span><a class=\"heading-anchor\" href=\"#cmdoption-collectstatic-clear\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Efface les fichiers existants avant d’essayer de copier ou de lier le fichier d’origine.</p>\n</dd></dl>\n\n<dl class=\"django-admin-option\">\n<dt class=\"sig sig-object\" id=\"cmdoption-collectstatic-link\">\n<span id=\"cmdoption-collectstatic-l\"></span><span class=\"sig-name descname\">--link</span><span class=\"sig-prename descclassname\"></span><span class=\"sig-prename descclassname\">, </span><span class=\"sig-name descname\">-l</span><span class=\"sig-prename descclassname\"></span><a class=\"heading-anchor\" href=\"#cmdoption-collectstatic-link\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Crée un lien symbolique vers chaque fichier au lieu de copier.</p>\n</dd></dl>\n\n<dl class=\"django-admin-option\">\n<dt class=\"sig sig-object\" id=\"cmdoption-collectstatic-no-post-process\">\n<span class=\"sig-name descname\">--no-post-process</span><span class=\"sig-prename descclassname\"></span><a class=\"heading-anchor\" href=\"#cmdoption-collectstatic-no-post-process\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>N’appelle pas la méthode <a class=\"reference internal\" href=\"#django.contrib.staticfiles.storage.StaticFilesStorage.post_process\" title=\"django.contrib.staticfiles.storage.StaticFilesStorage.post_process\"><code class=\"xref py py-meth docutils literal notranslate\">post_process()</code></a> du moteur de stockage configuré dans <a class=\"reference internal\" href=\"/fr/4.0/ref/settings/#std-setting-STATICFILES_STORAGE\"><code class=\"xref std std-setting docutils literal notranslate\">STATICFILES_STORAGE</code></a>.</p>\n</dd></dl>\n\n<dl class=\"django-admin-option\">\n<dt class=\"sig sig-object\" id=\"cmdoption-collectstatic-no-default-ignore\">\n<span class=\"sig-name descname\">--no-default-ignore</span><span class=\"sig-prename descclassname\"></span><a class=\"heading-anchor\" href=\"#cmdoption-collectstatic-no-default-ignore\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>N’ignore pas les motifs de style « glob » `` “CVS”<code class=\"docutils literal notranslate\">, ``'.*'</code> et <code class=\"docutils literal notranslate\">'*~'</code> qui sont normalement toujours ignorés.</p>\n</dd></dl>\n\n<p>Pour une liste complète des options, reportez-vous à l’aide des commandes elles-mêmes en exécutant :</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>python manage.py collectstatic --help\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> py manage.py collectstatic --help\n</code></pre></div></div></div>\n<section id=\"customizing-the-ignored-pattern-list\">\n<span id=\"customize-staticfiles-ignore-patterns\"></span><h4>Personnalisation de la liste des motifs ignorés<a class=\"heading-anchor\" href=\"#customizing-the-ignored-pattern-list\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h4>\n<p>La liste des motifs ignorés par défaut, <code class=\"docutils literal notranslate\">['CVS', '.*', '*~']</code>, peut être personnalisée de manière plus permanente que de fournir l’option en ligne de commande <code class=\"docutils literal notranslate\">--ignore</code> lors de chaque invocation de <code class=\"docutils literal notranslate\">collectstatic</code>. Ajoutez une classe <a class=\"reference internal\" href=\"/fr/4.0/ref/applications/#django.apps.AppConfig\" title=\"django.apps.AppConfig\"><code class=\"xref py py-class docutils literal notranslate\">AppConfig</code></a> personnalisée, surchargez l’attribut <code class=\"docutils literal notranslate\">ignore_patterns</code> de la classe et remplacez <code class=\"docutils literal notranslate\">'django.contrib.staticfiles'</code> dans le réglage <a class=\"reference internal\" href=\"/fr/4.0/ref/settings/#std-setting-INSTALLED_APPS\"><code class=\"xref std std-setting docutils literal notranslate\">INSTALLED_APPS</code></a> par le chemin de cette classe :</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</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=\"Code code\"><code><span class=\"kn\">from</span> <span class=\"nn\">django.contrib.staticfiles.apps</span> <span class=\"kn\">import</span> StaticFilesConfig\n\n<span class=\"k\">class</span> <span class=\"nc\">MyStaticFilesConfig</span><span class=\"p\">(</span>StaticFilesConfig<span class=\"p\">):</span>\n    ignore_patterns <span class=\"o\">=</span> <span class=\"p\">[</span><span class=\"o\">...</span><span class=\"p\">]</span>  <span class=\"c1\"># your custom ignore list</span>\n</code></pre></div>\n</section>\n</section>\n<section id=\"findstatic\">\n<h3><code class=\"docutils literal notranslate\">findstatic</code><a class=\"heading-anchor\" href=\"#findstatic\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"std django-admin\">\n<dt class=\"sig sig-object std\" id=\"django-admin-findstatic\">\n<span class=\"sig-name descname\">django-admin findstatic staticfile [staticfile ...]</span><a class=\"heading-anchor\" href=\"#django-admin-findstatic\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Recherche un ou plusieurs chemins relatifs en fonction des chercheurs activés.</p>\n<p>Par exemple :</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>python manage.py findstatic css/base.css admin/js/core.js\n<span class=\"go\">Found &#39;css/base.css&#39; here:</span>\n<span class=\"go\">  /home/special.polls.com/core/static/css/base.css</span>\n<span class=\"go\">  /home/polls.com/core/static/css/base.css</span>\n<span class=\"go\">Found &#39;admin/js/core.js&#39; here:</span>\n<span class=\"go\">  /home/polls.com/src/django/contrib/admin/media/js/core.js</span>\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> py manage.py findstatic css\\base.css admin\\js\\core.js\n<span class=\"go\">Found &#39;css/base.css&#39; here:</span>\n<span class=\"go\">  /home/special.polls.com/core/static/css/base.css</span>\n<span class=\"go\">  /home/polls.com/core/static/css/base.css</span>\n<span class=\"go\">Found &#39;admin/js/core.js&#39; here:</span>\n<span class=\"go\">  /home/polls.com/src/django/contrib/admin/media/js/core.js</span>\n</code></pre></div></div></div>\n<dl class=\"django-admin-option\">\n<dt class=\"sig sig-object\" id=\"cmdoption-findstatic-arg-findstatic\">\n<span class=\"sig-name descname\">findstatic</span><span class=\"sig-prename descclassname\"> --first</span><a class=\"heading-anchor\" href=\"#cmdoption-findstatic-arg-findstatic\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Par défaut, tous les emplacements trouvés sont utilisés. Pour ne renvoyer que le premier chemin relatif trouvé, utilisez l’option <code class=\"docutils literal notranslate\">--first</code>:</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>python manage.py findstatic css/base.css --first\n<span class=\"go\">Found &#39;css/base.css&#39; here:</span>\n<span class=\"go\">  /home/special.polls.com/core/static/css/base.css</span>\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> py manage.py findstatic css\\base.css --first\n<span class=\"go\">Found &#39;css/base.css&#39; here:</span>\n<span class=\"go\">  /home/special.polls.com/core/static/css/base.css</span>\n</code></pre></div></div></div>\n<p>Il s’agit d’une outil de débogage ; vous verrez exactement quel fichier statique sera trouvé pour un chemin donné.</p>\n<p>En mettant le drapeau <code class=\"docutils literal notranslate\">--verbosity</code> à 0, vous pouvez supprimer les explications complémentaires et obtenir uniquement les noms de chemins :</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>python manage.py findstatic css/base.css --verbosity <span class=\"m\">0</span>\n<span class=\"go\">/home/special.polls.com/core/static/css/base.css</span>\n<span class=\"go\">/home/polls.com/core/static/css/base.css</span>\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> py manage.py findstatic css\\base.css --verbosity 0\n<span class=\"go\">/home/special.polls.com/core/static/css/base.css</span>\n<span class=\"go\">/home/polls.com/core/static/css/base.css</span>\n</code></pre></div></div></div>\n<p>D’autre part, en mettant l’option <code class=\"docutils literal notranslate\">--verbosity</code> à 2, vous pouvez obtenir la liste de tous les répertoires qui ont été recherchés :</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>python manage.py findstatic css/base.css --verbosity <span class=\"m\">2</span>\n<span class=\"go\">Found &#39;css/base.css&#39; here:</span>\n<span class=\"go\">  /home/special.polls.com/core/static/css/base.css</span>\n<span class=\"go\">  /home/polls.com/core/static/css/base.css</span>\n<span class=\"go\">Looking in the following locations:</span>\n<span class=\"go\">  /home/special.polls.com/core/static</span>\n<span class=\"go\">  /home/polls.com/core/static</span>\n<span class=\"go\">  /some/other/path/static</span>\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> py manage.py findstatic css\\base.css --verbosity 2\n<span class=\"go\">Found &#39;css/base.css&#39; here:</span>\n<span class=\"go\">  /home/special.polls.com/core/static/css/base.css</span>\n<span class=\"go\">  /home/polls.com/core/static/css/base.css</span>\n<span class=\"go\">Looking in the following locations:</span>\n<span class=\"go\">  /home/special.polls.com/core/static</span>\n<span class=\"go\">  /home/polls.com/core/static</span>\n<span class=\"go\">  /some/other/path/static</span>\n</code></pre></div></div></div>\n</section>\n<section id=\"runserver\">\n<span id=\"staticfiles-runserver\"></span><h3><code class=\"docutils literal notranslate\">runserver</code><a class=\"heading-anchor\" href=\"#runserver\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"std django-admin\">\n<dt class=\"sig sig-object std\">\n<span class=\"sig-name descname\">django-admin runserver [addrport]</span></dt>\n<dd></dd></dl>\n\n<p>Remplace la commande de base <a class=\"reference internal\" href=\"/fr/4.0/ref/django-admin/#django-admin-runserver\"><code class=\"xref std std-djadmin docutils literal notranslate\">runserver</code></a> si l’application <code class=\"docutils literal notranslate\">staticfiles</code> est <a class=\"reference internal\" href=\"/fr/4.0/ref/settings/#std-setting-INSTALLED_APPS\"><code class=\"xref std std-setting docutils literal notranslate\">installée</code></a>, et ajoute automatiquement le service des fichiers statiques. Le service des fichiers n’utilise pas le réglage <a class=\"reference internal\" href=\"/fr/4.0/ref/settings/#std-setting-MIDDLEWARE\"><code class=\"xref std std-setting docutils literal notranslate\">MIDDLEWARE</code></a>.</p>\n<p>La commande ajoute ces options :</p>\n<dl class=\"django-admin-option\">\n<dt class=\"sig sig-object\" id=\"cmdoption-runserver-nostatic\">\n<span class=\"sig-name descname\">--nostatic</span><span class=\"sig-prename descclassname\"></span><a class=\"heading-anchor\" href=\"#cmdoption-runserver-nostatic\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Utilisez l’option <code class=\"docutils literal notranslate\">--nostatic</code> pour désactiver entièrement le service des fichiers statiques avec  l’application <a class=\"reference internal\" href=\"/fr/4.0/ref/contrib/staticfiles/\"><span class=\"doc\">staticfiles</span></a>. Cette option n’est disponible que si l’application <a class=\"reference internal\" href=\"/fr/4.0/ref/contrib/staticfiles/\"><span class=\"doc\">staticfiles</span></a> fait partie du réglage <a class=\"reference internal\" href=\"/fr/4.0/ref/settings/#std-setting-INSTALLED_APPS\"><code class=\"xref std std-setting docutils literal notranslate\">INSTALLED_APPS</code></a> de votre projet.</p>\n<p>Exemple d’utilisation :</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>django-admin runserver --nostatic\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> django-admin runserver --nostatic\n</code></pre></div></div></div>\n<dl class=\"django-admin-option\">\n<dt class=\"sig sig-object\" id=\"cmdoption-runserver-insecure\">\n<span class=\"sig-name descname\">--insecure</span><span class=\"sig-prename descclassname\"></span><a class=\"heading-anchor\" href=\"#cmdoption-runserver-insecure\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Utilisez l’option <code class=\"docutils literal notranslate\">--insecure</code> pour forcer le service des fichiers statiques avec l’application <a class=\"reference internal\" href=\"/fr/4.0/ref/contrib/staticfiles/\"><span class=\"doc\">staticfiles</span></a> même quand le réglage <a class=\"reference internal\" href=\"/fr/4.0/ref/settings/#std-setting-DEBUG\"><code class=\"xref std std-setting docutils literal notranslate\">DEBUG</code></a> est à <code class=\"docutils literal notranslate\">False</code>. En utilisant cette option, vous reconnaissez le fait que c’est <strong>totalement inefficace</strong> et très probablement <strong>non sécurisé</strong>. Cette option est uniquement destinée au développement en local et ne devrait <strong>jamais être utilisée en production</strong>. Elle n’est disponible que si l’application <a class=\"reference internal\" href=\"/fr/4.0/ref/contrib/staticfiles/\"><span class=\"doc\">staticfiles</span></a> se trouve dans le réglage <a class=\"reference internal\" href=\"/fr/4.0/ref/settings/#std-setting-INSTALLED_APPS\"><code class=\"xref std std-setting docutils literal notranslate\">INSTALLED_APPS</code></a> de votre projet.</p>\n<p><code class=\"docutils literal notranslate\">--insecure</code> ne fonctionne pas avec <a class=\"reference internal\" href=\"#django.contrib.staticfiles.storage.ManifestStaticFilesStorage\" title=\"django.contrib.staticfiles.storage.ManifestStaticFilesStorage\"><code class=\"xref py py-class docutils literal notranslate\">ManifestStaticFilesStorage</code></a>.</p>\n<p>Exemple d’utilisation :</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>django-admin runserver --insecure\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> django-admin runserver --insecure\n</code></pre></div></div></div>\n</section>\n</section>\n<section id=\"storages\">\n<span id=\"staticfiles-storages\"></span><h2>Stockages<a class=\"heading-anchor\" href=\"#storages\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h2>\n<section id=\"staticfilesstorage\">\n<h3><code class=\"docutils literal notranslate\">StaticFilesStorage</code><a class=\"heading-anchor\" href=\"#staticfilesstorage\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.staticfiles.storage.StaticFilesStorage\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-prename descclassname\">storage.</span><span class=\"sig-name descname\">StaticFilesStorage</span><a class=\"heading-anchor\" href=\"#django.contrib.staticfiles.storage.StaticFilesStorage\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Une sous-classe du moteur de stockage <a class=\"reference internal\" href=\"/fr/4.0/ref/files/storage/#django.core.files.storage.FileSystemStorage\" title=\"django.core.files.storage.FileSystemStorage\"><code class=\"xref py py-class docutils literal notranslate\">FileSystemStorage</code></a> qui utilise le réglage <a class=\"reference internal\" href=\"/fr/4.0/ref/settings/#std-setting-STATIC_ROOT\"><code class=\"xref std std-setting docutils literal notranslate\">STATIC_ROOT</code></a> comme emplacement de base dans le système de fichiers et le réglage <a class=\"reference internal\" href=\"/fr/4.0/ref/settings/#std-setting-STATIC_URL\"><code class=\"xref std std-setting docutils literal notranslate\">STATIC_URL</code></a> comme URL de base.</p>\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.staticfiles.storage.StaticFilesStorage.post_process\">\n<span class=\"sig-prename descclassname\">storage.StaticFilesStorage.</span><span class=\"sig-name descname\">post_process</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">paths</em>, <em class=\"sig-param\"><span class=\"o\">**</span>options</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.staticfiles.storage.StaticFilesStorage.post_process\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Si cette méthode est définie pour un stockage, elle est appelée par la commande de gestion <a class=\"reference internal\" href=\"#django-admin-collectstatic\"><code class=\"xref std std-djadmin docutils literal notranslate\">collectstatic</code></a> après chaque exécution et reçoit les stockages locaux et les chemins des fichiers trouvés sous forme de dictionnaire, de même que les options de la ligne de commande. Elle renvoie des tuples de trois valeurs : <code class=\"docutils literal notranslate\">chemin_original, chemin_traité, traité</code>. Les valeurs de chemins sont des chaînes et <code class=\"docutils literal notranslate\">traité</code> est un booléen indiquant si la valeur a reçu un post-traitement, ou une exception si le post-traitement a échoué.</p>\n<p>Le stockage <a class=\"reference internal\" href=\"#django.contrib.staticfiles.storage.ManifestStaticFilesStorage\" title=\"django.contrib.staticfiles.storage.ManifestStaticFilesStorage\"><code class=\"xref py py-class docutils literal notranslate\">ManifestStaticFilesStorage</code></a> utilise cette classe en coulisses pour remplacer les chemins par leur équivalent « haché » et mettre à jour le cache de manière appropriée.</p>\n</section>\n<section id=\"manifeststaticfilesstorage\">\n<h3><code class=\"docutils literal notranslate\">ManifestStaticFilesStorage</code><a class=\"heading-anchor\" href=\"#manifeststaticfilesstorage\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.staticfiles.storage.ManifestStaticFilesStorage\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-prename descclassname\">storage.</span><span class=\"sig-name descname\">ManifestStaticFilesStorage</span><a class=\"heading-anchor\" href=\"#django.contrib.staticfiles.storage.ManifestStaticFilesStorage\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Une sous-classe du moteur de stockage <a class=\"reference internal\" href=\"#django.contrib.staticfiles.storage.StaticFilesStorage\" title=\"django.contrib.staticfiles.storage.StaticFilesStorage\"><code class=\"xref py py-class docutils literal notranslate\">StaticFilesStorage</code></a> qui modifie les noms des fichiers qu’elle traite en ajoutant le hachage MD5 du contenu du fichier au nom de fichier. Par exemple, le fichier <code class=\"docutils literal notranslate\">css/styles.css</code> serait également enregistré en tant que <code class=\"docutils literal notranslate\">css/styles.55e7cbb9ba48.css</code>.</p>\n<p>Le but de ce stockage est de continuer à servir les anciens fichiers au cas où certaines pages se réfèrent encore à ces fichiers, par exemple parce qu’elles sont mises en cache par vous-même ou un serveur mandataire externe. En outre, cela est très utile si vous souhaitez appliquer des <a class=\"reference external\" href=\"https://developer.yahoo.com/performance/rules.html#expires\">en-têtes à date d’expiration très lointaine</a> aux fichiers déployés pour accélérer le temps de chargement des pages lors des visites ultérieures.</p>\n<p>Le moteur de stockage remplace automatiquement dans les fichiers enregistrés les chemins qui correspondent aux autres fichiers enregistrés par les chemins des copies en cache (en utilisant la méthode <a class=\"reference internal\" href=\"#django.contrib.staticfiles.storage.StaticFilesStorage.post_process\" title=\"django.contrib.staticfiles.storage.StaticFilesStorage.post_process\"><code class=\"xref py py-meth docutils literal notranslate\">post_process()</code></a>). Les expressions régulières utilisées pour rechercher ces chemins (<code class=\"docutils literal notranslate\">django.contrib.staticfiles.storage.HashedFilesMixin.patterns</code>) couvrent :</p>\n<ul class=\"simple\">\n<li><p>La règle <a class=\"reference external\" href=\"https://www.w3.org/TR/CSS2/cascade.html#at-import\">&#64;import</a> et l’instruction <a class=\"reference external\" href=\"https://www.w3.org/TR/CSS2/syndata.html#uri\">url()</a> des <a class=\"reference external\" href=\"https://www.w3.org/Style/CSS/\">feuilles de style CSS</a>.</p></li>\n<li><p>Le commentaire <a class=\"reference external\" href=\"https://developer.mozilla.org/en-US/docs/Tools/Debugger/How_to/Use_a_source_map\">source map</a> dans JavaScript.</p></li>\n</ul>\n<p>Par exemple, le fichier <code class=\"docutils literal notranslate\">'css/styles.css'</code> avec ce contenu :</p>\n<div class=\"code-block\" data-language=\"css\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Css</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=\"Css code\"><code><span class=\"p\">@</span><span class=\"k\">import</span> <span class=\"nt\">url</span><span class=\"o\">(</span><span class=\"s2\">&quot;../admin/css/base.css&quot;</span><span class=\"o\">)</span><span class=\"p\">;</span>\n</code></pre></div>\n<p>…serait remplacé par l’appel de la méthode <a class=\"reference internal\" href=\"/fr/4.0/ref/files/storage/#django.core.files.storage.Storage.url\" title=\"django.core.files.storage.Storage.url\"><code class=\"xref py py-meth docutils literal notranslate\">url()</code></a> du moteur de stockage <code class=\"docutils literal notranslate\">ManifestStaticFilesStorage</code>, enregistrant finalement un fichier <code class=\"docutils literal notranslate\">'css/styles.55e7cbb9ba48.css'</code> avec le contenu suivant :</p>\n<div class=\"code-block\" data-language=\"css\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Css</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=\"Css code\"><code><span class=\"p\">@</span><span class=\"k\">import</span> <span class=\"nt\">url</span><span class=\"o\">(</span><span class=\"s2\">&quot;../admin/css/base.27e20196a850.css&quot;</span><span class=\"o\">)</span><span class=\"p\">;</span>\n</code></pre></div>\n<p>Vous pouvez modifier l’emplacement du fichier manifeste en utilisant une sous-classe personnalisée de <code class=\"docutils literal notranslate\">ManifestStaticFilesStorage</code> qui définit l’argument <code class=\"docutils literal notranslate\">manifest_storage</code>. Par exemple</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</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=\"Code code\"><code><span class=\"kn\">from</span> <span class=\"nn\">django.conf</span> <span class=\"kn\">import</span> settings\n<span class=\"kn\">from</span> <span class=\"nn\">django.contrib.staticfiles.storage</span> <span class=\"kn\">import</span> <span class=\"p\">(</span>\n    ManifestStaticFilesStorage<span class=\"p\">,</span> StaticFilesStorage<span class=\"p\">,</span>\n<span class=\"p\">)</span>\n\n<span class=\"k\">class</span> <span class=\"nc\">MyManifestStaticFilesStorage</span><span class=\"p\">(</span>ManifestStaticFilesStorage<span class=\"p\">):</span>\n    <span class=\"k\">def</span> <span class=\"fm\">__init__</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"p\">,</span> <span class=\"o\">*</span>args<span class=\"p\">,</span> <span class=\"o\">**</span>kwargs<span class=\"p\">):</span>\n        manifest_storage <span class=\"o\">=</span> StaticFilesStorage<span class=\"p\">(</span>location<span class=\"o\">=</span>settings<span class=\"o\">.</span>BASE_DIR<span class=\"p\">)</span>\n        <span class=\"nb\">super</span><span class=\"p\">()</span><span class=\"o\">.</span><span class=\"fm\">__init__</span><span class=\"p\">(</span><span class=\"o\">*</span>args<span class=\"p\">,</span> manifest_storage<span class=\"o\">=</span>manifest_storage<span class=\"p\">,</span> <span class=\"o\">**</span>kwargs<span class=\"p\">)</span>\n</code></pre></div>\n<aside class=\"version-note version-changed\" data-version=\"4.0\" role=\"note\">\n<p class=\"version-note-title\">Changed in Django 4.0</p><p>La prise en charge de la découverte des chemins dans les commentaires « source map » a été ajoutée.</p>\n<p>Le paramètre <code class=\"docutils literal notranslate\">manifest_storage</code> a été ajouté.</p>\n</aside>\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.staticfiles.storage.ManifestStaticFilesStorage.max_post_process_passes\">\n<span class=\"sig-prename descclassname\">storage.ManifestStaticFilesStorage.</span><span class=\"sig-name descname\">max_post_process_passes</span><a class=\"heading-anchor\" href=\"#django.contrib.staticfiles.storage.ManifestStaticFilesStorage.max_post_process_passes\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Comme les fichiers statiques peuvent se référer à d’autres fichiers statiques qui ont besoin d’un remplacement de chemins, plusieurs passes de remplacements de chemins peuvent être nécessaires jusqu’à ce que les hachages de fichier convergent. Pour éviter une boucle sans fin en raison de hachages non convergeant (par exemple, si <code class=\"docutils literal notranslate\">'foo.css'</code> se réfère à <code class=\"docutils literal notranslate\">'bar.css'</code> qui référence <code class=\"docutils literal notranslate\">'foo.css'</code>), un nombre maximum de passes est défini avant qu’un post-traitement soit abandonné. Dans le cas d’un nombre de références élevé, il pourrait être nécessaire d’augmenter ce nombre de passes. Ceci peut se faire en créant une sous-classe de <code class=\"docutils literal notranslate\">ManifestStaticFilesStorage</code> et en définissant l’attribut <code class=\"docutils literal notranslate\">max_post_process_passes</code>. Sa valeur par défaut est 5.</p>\n<p>Pour activer le stockage <code class=\"docutils literal notranslate\">ManifestStaticFilesStorage</code>, vous devez vous assurer que les conditions suivantes sont remplies :</p>\n<ul class=\"simple\">\n<li><p>le réglage <a class=\"reference internal\" href=\"/fr/4.0/ref/settings/#std-setting-STATICFILES_STORAGE\"><code class=\"xref std std-setting docutils literal notranslate\">STATICFILES_STORAGE</code></a> contient <code class=\"docutils literal notranslate\">'django.contrib.staticfiles.storage.ManifestStaticFilesStorage'</code></p></li>\n<li><p>le réglage <a class=\"reference internal\" href=\"/fr/4.0/ref/settings/#std-setting-DEBUG\"><code class=\"xref std std-setting docutils literal notranslate\">DEBUG</code></a>  contient <code class=\"docutils literal notranslate\">False</code></p></li>\n<li><p>vous avez recueilli tous les fichiers statiques en utilisant la commande d’administration <a class=\"reference internal\" href=\"#django-admin-collectstatic\"><code class=\"xref std std-djadmin docutils literal notranslate\">collectstatic</code></a></p></li>\n</ul>\n<p>Comme la création du hachage MD5 peut diminuer la performance de votre site Web, <code class=\"docutils literal notranslate\">staticfiles</code> stocke automatiquement la correspondance des noms hachés pour chaque fichier traité dans un fichier nommé  <code class=\"docutils literal notranslate\">staticfiles.json</code>. Cela se produit une seule fois au moment où vous exécutez la commande <a class=\"reference internal\" href=\"#django-admin-collectstatic\"><code class=\"xref std std-djadmin docutils literal notranslate\">collectstatic</code></a>.</p>\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.staticfiles.storage.ManifestStaticFilesStorage.manifest_strict\">\n<span class=\"sig-prename descclassname\">storage.ManifestStaticFilesStorage.</span><span class=\"sig-name descname\">manifest_strict</span><a class=\"heading-anchor\" href=\"#django.contrib.staticfiles.storage.ManifestStaticFilesStorage.manifest_strict\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Si un fichier n’est pas trouvé dans le manifeste <code class=\"docutils literal notranslate\">staticfiles.json</code> lors de l’exécution, une exception <code class=\"docutils literal notranslate\">ValueError</code> est générée. Ce comportement peut être désactivé en créant une sous-classe de <code class=\"docutils literal notranslate\">ManifestStaticFilesStorage</code> et en définissant l’attribut <code class=\"docutils literal notranslate\">manifest_strict</code> à <code class=\"docutils literal notranslate\">False</code> – les chemins non existants seront laissés inchangés.</p>\n<p>Comme il faut que la commande <a class=\"reference internal\" href=\"#django-admin-collectstatic\"><code class=\"xref std std-djadmin docutils literal notranslate\">collectstatic</code></a> ait été lancée, ce stockage ne doit normalement pas être utilisé lors de l’exécution des tests car <code class=\"docutils literal notranslate\">collectstatic</code> n’est pas exécutée dans une configuration de test normale. Lors des tests, vérifiez que le réglage <a class=\"reference internal\" href=\"/fr/4.0/ref/settings/#std-setting-STATICFILES_STORAGE\"><code class=\"xref std std-setting docutils literal notranslate\">STATICFILES_STORAGE</code></a> est défini sur autre chose, comme par exemple la valeur par défaut  <code class=\"docutils literal notranslate\">'django.contrib.staticfiles.storage.StaticFilesStorage'</code>.</p>\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.staticfiles.storage.ManifestStaticFilesStorage.file_hash\">\n<span class=\"sig-prename descclassname\">storage.ManifestStaticFilesStorage.</span><span class=\"sig-name descname\">file_hash</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">name</em>, <em class=\"sig-param\">content<span class=\"o\">=</span><span class=\"default_value\">None</span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.staticfiles.storage.ManifestStaticFilesStorage.file_hash\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>La méthode utilisée lors de la création du nom haché d’un fichier. Doit renvoyer une empreinte de hachage pour le nom de fichier donné et son contenu. Par défaut, on calcule un hachage MD5 à partir du contenu comme mentionné ci-dessus. N’hésitez pas à redéfinir cette méthode pour utiliser votre propre algorithme de hachage.</p>\n</section>\n<section id=\"manifestfilesmixin\">\n<h3><code class=\"docutils literal notranslate\">ManifestFilesMixin</code><a class=\"heading-anchor\" href=\"#manifestfilesmixin\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.staticfiles.storage.ManifestFilesMixin\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-prename descclassname\">storage.</span><span class=\"sig-name descname\">ManifestFilesMixin</span><a class=\"heading-anchor\" href=\"#django.contrib.staticfiles.storage.ManifestFilesMixin\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Utilisez cette classe mixin avec un stockage personnalisé pour ajouter au nom de fichier une empreinte MD5 du contenu du fichier, comme le fait <a class=\"reference internal\" href=\"#django.contrib.staticfiles.storage.ManifestStaticFilesStorage\" title=\"django.contrib.staticfiles.storage.ManifestStaticFilesStorage\"><code class=\"xref py py-class docutils literal notranslate\">ManifestStaticFilesStorage</code></a>.</p>\n<aside class=\"version-note version-changed\" data-version=\"4.0\" role=\"note\">\n<p class=\"version-note-title\">Changed in Django 4.0</p><p>Le paramètre <code class=\"docutils literal notranslate\">manifest_storage</code> a été ajouté.</p>\n</aside>\n</section>\n</section>\n<section id=\"finders-module\">\n<h2>Le module <code class=\"docutils literal notranslate\">finders</code><a class=\"heading-anchor\" href=\"#finders-module\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Le module <code class=\"docutils literal notranslate\">finders</code> (découverte des fichiers statiques) de <code class=\"docutils literal notranslate\">staticfiles</code> possède un attribut <code class=\"docutils literal notranslate\">searched_locations</code> qui est une liste de chemins de répertoires dans lesquels des fichiers statiques ont été recherchés. Exemple d’utilisation :</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</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=\"Code code\"><code><span class=\"kn\">from</span> <span class=\"nn\">django.contrib.staticfiles</span> <span class=\"kn\">import</span> finders\n\nresult <span class=\"o\">=</span> finders<span class=\"o\">.</span>find<span class=\"p\">(</span><span class=\"s1\">&#39;css/base.css&#39;</span><span class=\"p\">)</span>\nsearched_locations <span class=\"o\">=</span> finders<span class=\"o\">.</span>searched_locations\n</code></pre></div>\n</section>\n<section id=\"other-helpers\">\n<h2>Autres utilitaires<a class=\"heading-anchor\" href=\"#other-helpers\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Il existe quelques autres utilitaires en plus de l’application <a class=\"reference internal\" href=\"#module-django.contrib.staticfiles\" title=\"django.contrib.staticfiles: An app for handling static files.\"><code class=\"xref py py-mod docutils literal notranslate\">staticfiles</code></a> pour gérer les fichiers statiques :</p>\n<ul class=\"simple\">\n<li><p>Le processeur de contexte <a class=\"reference internal\" href=\"/fr/4.0/ref/templates/api/#django.template.context_processors.static\" title=\"django.template.context_processors.static\"><code class=\"xref py py-func docutils literal notranslate\">django.template.context_processors.static()</code></a> qui ajoute <a class=\"reference internal\" href=\"/fr/4.0/ref/settings/#std-setting-STATIC_URL\"><code class=\"xref std std-setting docutils literal notranslate\">STATIC_URL</code></a> au contexte de chaque gabarit rendu avec <a class=\"reference internal\" href=\"/fr/4.0/ref/templates/api/#django.template.RequestContext\" title=\"django.template.RequestContext\"><code class=\"xref py py-class docutils literal notranslate\">RequestContext</code></a>.</p></li>\n<li><p>La balise de gabarit <a class=\"reference internal\" href=\"/fr/4.0/ref/templates/builtins/#std-templatetag-static\"><code class=\"xref std std-ttag docutils literal notranslate\">static</code></a> de base qui prend un chemin et le combine avec le préfixe statique <a class=\"reference internal\" href=\"/fr/4.0/ref/settings/#std-setting-STATIC_URL\"><code class=\"xref std std-setting docutils literal notranslate\">STATIC_URL</code></a>. Si <code class=\"docutils literal notranslate\">django.contrib.staticfiles</code> est installée, la balise utilise plutôt la méthode <code class=\"docutils literal notranslate\">url()</code> de <a class=\"reference internal\" href=\"/fr/4.0/ref/settings/#std-setting-STATICFILES_STORAGE\"><code class=\"xref std std-setting docutils literal notranslate\">STATICFILES_STORAGE</code></a>.</p></li>\n<li><p>La balise de gabarit <a class=\"reference internal\" href=\"/fr/4.0/ref/templates/builtins/#std-templatetag-get_static_prefix\"><code class=\"xref std std-ttag docutils literal notranslate\">get_static_prefix</code></a> qui renseigne une variable de gabarit avec le préfixe statique <a class=\"reference internal\" href=\"/fr/4.0/ref/settings/#std-setting-STATIC_URL\"><code class=\"xref std std-setting docutils literal notranslate\">STATIC_URL</code></a> pour utilisation immédiate ou stockée dans une variable.</p></li>\n<li><p>La balise de gabarit similaire <a class=\"reference internal\" href=\"/fr/4.0/ref/templates/builtins/#std-templatetag-get_media_prefix\"><code class=\"xref std std-ttag docutils literal notranslate\">get_media_prefix</code></a> qui fonctionne comme <a class=\"reference internal\" href=\"/fr/4.0/ref/templates/builtins/#std-templatetag-get_static_prefix\"><code class=\"xref std std-ttag docutils literal notranslate\">get_static_prefix</code></a> mais utilise <a class=\"reference internal\" href=\"/fr/4.0/ref/settings/#std-setting-MEDIA_URL\"><code class=\"xref std std-setting docutils literal notranslate\">MEDIA_URL</code></a>.</p></li>\n</ul>\n<section id=\"static-file-development-view\">\n<span id=\"staticfiles-development-view\"></span><h3>Vue pour l’utilisation des fichiers statiques en développement<a class=\"heading-anchor\" href=\"#static-file-development-view\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Les outils concernant les fichiers statiques sont principalement conçus pour aider à déployer correctement les fichiers statiques en production. Cela implique généralement de dédier un serveur distinct pour les fichiers statiques, ce qui induit de trop nombreuses actions supplémentaires lorsque l’on développe en local sur un environnement de développement. Ainsi, l’application <code class=\"docutils literal notranslate\">staticfiles</code> est fournie avec une <strong>vue à la va-vite</strong> que vous pouvez utiliser pour s’occuper du service des fichiers lors du développement local.</p>\n<dl class=\"py function\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.staticfiles.views.serve\">\n<span class=\"sig-prename descclassname\">views.</span><span class=\"sig-name descname\">serve</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">request</em>, <em class=\"sig-param\">path</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.staticfiles.views.serve\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Cette fonction de vue sert les fichiers statiques lors du développement.</p>\n<aside class=\"admonition admonition-warning\" role=\"note\">\n<p class=\"admonition-title\">Avertissement</p>\n<p>Cette vue ne fonctionne que si le réglage <a class=\"reference internal\" href=\"/fr/4.0/ref/settings/#std-setting-DEBUG\"><code class=\"xref std std-setting docutils literal notranslate\">DEBUG</code></a> vaut <code class=\"docutils literal notranslate\">True</code>.</p>\n<p>C’est parce que cette vue est <strong>totalement inefficace</strong> et probablement <strong>non sécurisée</strong>. Elle n’est destinée qu’au développement en local et ne devrait <strong>jamais être utilisée en production</strong>.</p>\n</aside>\n<aside class=\"admonition admonition-note\" role=\"note\">\n<p class=\"admonition-title\">Note</p>\n<p>Pour deviner les types de contenu des fichiers servis, cette vue exploite le module <a class=\"reference external\" href=\"https://docs.python.org/3/library/mimetypes.html#module-mimetypes\" title=\"(disponible dans Python v3.14)\"><code class=\"xref py py-mod docutils literal notranslate\">mimetypes</code></a> de la bibliothèque Python standard, qui se base elle-même sur la correspondance des types de fichiers de la plate-forme sous-jacente. Si vous trouvez que cette vue ne renvoie pas les bons types de contenu pour certains fichiers, il est plus que probable que la correspondance des types de fichiers de la plate-forme est fausse ou doit être mise à jour. Ceci peut par exemple être réalisé par l’installation ou la mise à jour du paquet <code class=\"docutils literal notranslate\">mailcap</code> sur une distribution Red Hat, du paquet <code class=\"docutils literal notranslate\">mime-support</code> sur une distribution Debian ou en modifiant les clés sous <code class=\"docutils literal notranslate\">HKEY_CLASSES_ROOT</code> dans le registre Windows.</p>\n</aside>\n<p>Cette vue est automatiquement activée par <a class=\"reference internal\" href=\"/fr/4.0/ref/django-admin/#django-admin-runserver\"><code class=\"xref std std-djadmin docutils literal notranslate\">runserver</code></a> (avec le réglage <a class=\"reference internal\" href=\"/fr/4.0/ref/settings/#std-setting-DEBUG\"><code class=\"xref std std-setting docutils literal notranslate\">DEBUG</code></a> à <code class=\"docutils literal notranslate\">True</code>). Pour utiliser la vue avec un autre serveur de développement local, ajoutez le code suivant à la fin de la configuration d’URL principale :</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</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=\"Code code\"><code><span class=\"kn\">from</span> <span class=\"nn\">django.conf</span> <span class=\"kn\">import</span> settings\n<span class=\"kn\">from</span> <span class=\"nn\">django.contrib.staticfiles</span> <span class=\"kn\">import</span> views\n<span class=\"kn\">from</span> <span class=\"nn\">django.urls</span> <span class=\"kn\">import</span> re_path\n\n<span class=\"k\">if</span> settings<span class=\"o\">.</span>DEBUG<span class=\"p\">:</span>\n    urlpatterns <span class=\"o\">+=</span> <span class=\"p\">[</span>\n        re_path<span class=\"p\">(</span><span class=\"sa\">r</span><span class=\"s1\">&#39;^static/(?P&lt;path&gt;.*)$&#39;</span><span class=\"p\">,</span> views<span class=\"o\">.</span>serve<span class=\"p\">),</span>\n    <span class=\"p\">]</span>\n</code></pre></div>\n<p>Remarque : le début du motif (<code class=\"docutils literal notranslate\">r'^static/'</code>) devrait correspondre au réglage <a class=\"reference internal\" href=\"/fr/4.0/ref/settings/#std-setting-STATIC_URL\"><code class=\"xref std std-setting docutils literal notranslate\">STATIC_URL</code></a>.</p>\n<p>Comme c’est un peu fastidieux, il existe aussi une fonction utilitaire qui fait cela pour vous :</p>\n<dl class=\"py function\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.staticfiles.urls.staticfiles_urlpatterns\">\n<span class=\"sig-prename descclassname\">urls.</span><span class=\"sig-name descname\">staticfiles_urlpatterns</span><span class=\"sig-paren\">(</span><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.contrib.staticfiles.urls.staticfiles_urlpatterns\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Cela renvoie le motif d’URL approprié pour servir les fichiers statiques et peut être ajouté à la liste de motifs d’URL déjà définie. Utilisez-la comme ceci :</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</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=\"Code code\"><code><span class=\"kn\">from</span> <span class=\"nn\">django.contrib.staticfiles.urls</span> <span class=\"kn\">import</span> staticfiles_urlpatterns\n\n<span class=\"c1\"># ... the rest of your URLconf here ...</span>\n\nurlpatterns <span class=\"o\">+=</span> staticfiles_urlpatterns<span class=\"p\">()</span>\n</code></pre></div>\n<p>Cette fonction examine le réglage <a class=\"reference internal\" href=\"/fr/4.0/ref/settings/#std-setting-STATIC_URL\"><code class=\"xref std std-setting docutils literal notranslate\">STATIC_URL</code></a> et connecte la vue de service des fichiers statiques en conséquence. N’oubliez pas de définir le réglage <a class=\"reference internal\" href=\"/fr/4.0/ref/settings/#std-setting-STATICFILES_DIRS\"><code class=\"xref std std-setting docutils literal notranslate\">STATICFILES_DIRS</code></a> approprié pour faire savoir à <code class=\"docutils literal notranslate\">django.contrib.staticfiles</code> où rechercher les fichiers en plus des fichiers dans les répertoires des applications.</p>\n<aside class=\"admonition admonition-warning\" role=\"note\">\n<p class=\"admonition-title\">Avertissement</p>\n<p>Cette fonction utilitaire ne fonctionne que si <a class=\"reference internal\" href=\"/fr/4.0/ref/settings/#std-setting-DEBUG\"><code class=\"xref std std-setting docutils literal notranslate\">DEBUG</code></a> vaut <code class=\"docutils literal notranslate\">True</code> et que le réglage <a class=\"reference internal\" href=\"/fr/4.0/ref/settings/#std-setting-STATIC_URL\"><code class=\"xref std std-setting docutils literal notranslate\">STATIC_URL</code></a> n’est ni vide ni une URL complète comme <code class=\"docutils literal notranslate\">http://static.example.com/</code>.</p>\n<p>C’est parce que cette vue est <strong>totalement inefficace</strong> et probablement <strong>non sécurisée</strong>. Elle n’est destinée qu’au développement en local et ne devrait <strong>jamais être utilisée en production</strong>.</p>\n</aside>\n</section>\n<section id=\"specialized-test-case-to-support-live-testing\">\n<h3>Cas de test particulier pour permettre le « test en live »<a class=\"heading-anchor\" href=\"#specialized-test-case-to-support-live-testing\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.contrib.staticfiles.testing.StaticLiveServerTestCase\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-prename descclassname\">testing.</span><span class=\"sig-name descname\">StaticLiveServerTestCase</span><a class=\"heading-anchor\" href=\"#django.contrib.staticfiles.testing.StaticLiveServerTestCase\"><span class=\"visually-hidden\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Cette sous-classe de test unitaire <code class=\"docutils literal notranslate\">TestCase</code> hérite de <a class=\"reference internal\" href=\"/fr/4.0/topics/testing/tools/#django.test.LiveServerTestCase\" title=\"django.test.LiveServerTestCase\"><code class=\"xref py py-class docutils literal notranslate\">django.test.LiveServerTestCase</code></a>.</p>\n<p>Tout comme sa classe parente, vous pouvez l’utiliser pour écrire des tests qui impliquent le fonctionnement du code testé et de son exploitation par des outils de test à travers HTTP (par ex. Selenium, PhantomJS, etc.), et pour lesquels il est nécessaire que les fichiers statiques soient également disponibles.</p>\n<p>Mais étant donné qu’elle fait appel à la vue <a class=\"reference internal\" href=\"#django.contrib.staticfiles.views.serve\" title=\"django.contrib.staticfiles.views.serve\"><code class=\"xref py py-func docutils literal notranslate\">django.contrib.staticfiles.views.serve()</code></a> présentée plus haut, elle peut servir de manière transparente au moment de l’exécution des tests les ressources statiques mises à disposition par le moteur de découverte de <code class=\"docutils literal notranslate\">staticfiles</code>. Cela signifie que vous n’avez pas besoin de lancer <a class=\"reference internal\" href=\"#django-admin-collectstatic\"><code class=\"xref std std-djadmin docutils literal notranslate\">collectstatic</code></a> préalablement ou dans le cadre de la configuration des tests.</p>\n</section>\n</section>","rootId":"module-django.contrib.staticfiles","toc":[{"title":"Réglages","anchor":"settings","children":[]},{"title":"Commandes d’administration","anchor":"management-commands","children":[{"title":"collectstatic","anchor":"collectstatic","children":[{"title":"Personnalisation de la liste des motifs ignorés","anchor":"customizing-the-ignored-pattern-list","children":[]}]},{"title":"findstatic","anchor":"findstatic","children":[]},{"title":"runserver","anchor":"runserver","children":[]}]},{"title":"Stockages","anchor":"storages","children":[{"title":"StaticFilesStorage","anchor":"staticfilesstorage","children":[]},{"title":"ManifestStaticFilesStorage","anchor":"manifeststaticfilesstorage","children":[]},{"title":"ManifestFilesMixin","anchor":"manifestfilesmixin","children":[]}]},{"title":"Le module finders","anchor":"finders-module","children":[]},{"title":"Autres utilitaires","anchor":"other-helpers","children":[{"title":"Vue pour l’utilisation des fichiers statiques en développement","anchor":"static-file-development-view","children":[]},{"title":"Cas de test particulier pour permettre le « test en live »","anchor":"specialized-test-case-to-support-live-testing","children":[]}]}],"breadcrumbs":[{"docname":"ref/index","title":"Référence de l’API","url":"/fr/4.0/ref/"},{"docname":"ref/contrib/index","title":"Paquets contrib","url":"/fr/4.0/ref/contrib/"}],"prev":{"docname":"ref/contrib/sites","title":"L’infrastructure des « sites »","url":"/fr/4.0/ref/contrib/sites/"},"next":{"docname":"ref/contrib/syndication","title":"L’infrastructure de syndication par flux","url":"/fr/4.0/ref/contrib/syndication/"},"formats":{"html":"/fr/4.0/ref/contrib/staticfiles/","markdown":"/fr/4.0/ref/contrib/staticfiles.md","json":"/fr/4.0/ref/contrib/staticfiles.json"},"source":"https://github.com/django/django/blob/stable/4.0.x/docs/ref/contrib/staticfiles.txt","official":"https://docs.djangoproject.com/fr/4.0/ref/contrib/staticfiles/","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","zh-hans","fr","ja","id","it","pt-br","ko","es","el","pl"]}