{"title":"How to manage static files (e.g. images, JavaScript, CSS)","version":"4.1","locale":"en","docname":"howto/static-files/index","url":"/en/4.1/howto/static-files/","canonical":"https://djangodocs.dev/en/4.1/howto/static-files/","summary":"Websites generally need to serve additional files such as images, JavaScript, or CSS. In Django, we refer to these files as “static files”. Django provides…","html":"<h1>How to manage static files (e.g. images, JavaScript, CSS)<a class=\"heading-anchor\" href=\"#how-to-manage-static-files-e-g-images-javascript-css\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h1>\n<p>Websites generally need to serve additional files such as images, JavaScript,\nor CSS. In Django, we refer to these files as “static files”.  Django provides\n<a class=\"reference internal\" href=\"/en/4.1/ref/contrib/staticfiles/#module-django.contrib.staticfiles\" title=\"django.contrib.staticfiles: An app for handling static files.\"><code class=\"xref py py-mod docutils literal notranslate\"><span class=\"pre\">django.contrib.staticfiles</span></code></a> to help you manage them.</p>\n<p>This page describes how you can serve these static files.</p>\n<section id=\"configuring-static-files\">\n<h2>Configuring static files<a class=\"heading-anchor\" href=\"#configuring-static-files\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<ol class=\"arabic\">\n<li><p>Make sure that <code class=\"docutils literal notranslate\"><span class=\"pre\">django.contrib.staticfiles</span></code> is included in your\n<a class=\"reference internal\" href=\"/en/4.1/ref/settings/#std-setting-INSTALLED_APPS\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">INSTALLED_APPS</span></code></a>.</p></li>\n<li><p>In your settings file, define <a class=\"reference internal\" href=\"/en/4.1/ref/settings/#std-setting-STATIC_URL\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">STATIC_URL</span></code></a>, for example:</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=\"n\">STATIC_URL</span> <span class=\"o\">=</span> <span class=\"s1\">&#39;static/&#39;</span>\n</code></pre></div>\n</li>\n<li><p>In your templates, use the <a class=\"reference internal\" href=\"/en/4.1/ref/templates/builtins/#std-templatetag-static\"><code class=\"xref std std-ttag docutils literal notranslate\"><span class=\"pre\">static</span></code></a> template tag to build the URL for\nthe given relative path using the configured <a class=\"reference internal\" href=\"/en/4.1/ref/settings/#std-setting-STATICFILES_STORAGE\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">STATICFILES_STORAGE</span></code></a>.</p>\n<div class=\"code-block\" data-language=\"html+django\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Django template</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=\"Django template code\"><code><span class=\"cp\">{%</span> <span class=\"k\">load</span> <span class=\"nv\">static</span> <span class=\"cp\">%}</span>\n<span class=\"p\">&lt;</span><span class=\"nt\">img</span> <span class=\"na\">src</span><span class=\"o\">=</span><span class=\"s\">&quot;</span><span class=\"cp\">{%</span> <span class=\"k\">static</span> <span class=\"s1\">&#39;my_app/example.jpg&#39;</span> <span class=\"cp\">%}</span><span class=\"s\">&quot;</span> <span class=\"na\">alt</span><span class=\"o\">=</span><span class=\"s\">&quot;My image&quot;</span><span class=\"p\">&gt;</span>\n</code></pre></div>\n</li>\n<li><p>Store your static files in a folder called <code class=\"docutils literal notranslate\"><span class=\"pre\">static</span></code> in your app. For\nexample <code class=\"docutils literal notranslate\"><span class=\"pre\">my_app/static/my_app/example.jpg</span></code>.</p></li>\n</ol>\n<aside class=\"admonition-serving-the-files admonition\">\n<p class=\"admonition-title\">Serving the files</p>\n<p>In addition to these configuration steps, you’ll also need to actually\nserve the static files.</p>\n<p>During development, if you use <a class=\"reference internal\" href=\"/en/4.1/ref/contrib/staticfiles/#module-django.contrib.staticfiles\" title=\"django.contrib.staticfiles: An app for handling static files.\"><code class=\"xref py py-mod docutils literal notranslate\"><span class=\"pre\">django.contrib.staticfiles</span></code></a>, this will\nbe done automatically by <a class=\"reference internal\" href=\"/en/4.1/ref/django-admin/#django-admin-runserver\"><code class=\"xref std std-djadmin docutils literal notranslate\"><span class=\"pre\">runserver</span></code></a> when <a class=\"reference internal\" href=\"/en/4.1/ref/settings/#std-setting-DEBUG\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">DEBUG</span></code></a> is set\nto <code class=\"docutils literal notranslate\"><span class=\"pre\">True</span></code> (see <a class=\"reference internal\" href=\"/en/4.1/ref/contrib/staticfiles/#django.contrib.staticfiles.views.serve\" title=\"django.contrib.staticfiles.views.serve\"><code class=\"xref py py-func docutils literal notranslate\"><span class=\"pre\">django.contrib.staticfiles.views.serve()</span></code></a>).</p>\n<p>This method is <strong>grossly inefficient</strong> and probably <strong>insecure</strong>,\nso it is <strong>unsuitable for production</strong>.</p>\n<p>See <a class=\"reference internal\" href=\"/en/4.1/howto/static-files/deployment/\"><span class=\"doc\">How to deploy static files</span></a> for proper strategies to serve\nstatic files in production environments.</p>\n</aside>\n<p>Your project will probably also have static assets that aren’t tied to a\nparticular app. In addition to using a <code class=\"docutils literal notranslate\"><span class=\"pre\">static/</span></code> directory inside your apps,\nyou can define a list of directories (<a class=\"reference internal\" href=\"/en/4.1/ref/settings/#std-setting-STATICFILES_DIRS\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">STATICFILES_DIRS</span></code></a>) in your\nsettings file where Django will also look for static files. For example:</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=\"n\">STATICFILES_DIRS</span> <span class=\"o\">=</span> <span class=\"p\">[</span>\n    <span class=\"n\">BASE_DIR</span> <span class=\"o\">/</span> <span class=\"s2\">&quot;static&quot;</span><span class=\"p\">,</span>\n    <span class=\"s1\">&#39;/var/www/static/&#39;</span><span class=\"p\">,</span>\n<span class=\"p\">]</span>\n</code></pre></div>\n<p>See the documentation for the <a class=\"reference internal\" href=\"/en/4.1/ref/settings/#std-setting-STATICFILES_FINDERS\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">STATICFILES_FINDERS</span></code></a> setting for\ndetails on how <code class=\"docutils literal notranslate\"><span class=\"pre\">staticfiles</span></code> finds your files.</p>\n<aside class=\"admonition-static-file-namespacing admonition\">\n<p class=\"admonition-title\">Static file namespacing</p>\n<p>Now we <em>might</em> be able to get away with putting our static files directly\nin <code class=\"docutils literal notranslate\"><span class=\"pre\">my_app/static/</span></code> (rather than creating another <code class=\"docutils literal notranslate\"><span class=\"pre\">my_app</span></code>\nsubdirectory), but it would actually be a bad idea. Django will use the\nfirst static file it finds whose name matches, and if you had a static file\nwith the same name in a <em>different</em> application, Django would be unable to\ndistinguish between them. We need to be able to point Django at the right\none, and the best way to ensure this is by <em>namespacing</em> them. That is,\nby putting those static files inside <em>another</em> directory named for the\napplication itself.</p>\n<p>You can namespace static assets in <a class=\"reference internal\" href=\"/en/4.1/ref/settings/#std-setting-STATICFILES_DIRS\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">STATICFILES_DIRS</span></code></a> by\nspecifying <a class=\"reference internal\" href=\"/en/4.1/ref/settings/#staticfiles-dirs-prefixes\"><span class=\"std std-ref\">prefixes</span></a>.</p>\n</aside>\n</section>\n<section id=\"serving-static-files-during-development\">\n<span id=\"serving-static-files-in-development\"></span><h2>Serving static files during development<a class=\"heading-anchor\" href=\"#serving-static-files-during-development\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>If you use <a class=\"reference internal\" href=\"/en/4.1/ref/contrib/staticfiles/#module-django.contrib.staticfiles\" title=\"django.contrib.staticfiles: An app for handling static files.\"><code class=\"xref py py-mod docutils literal notranslate\"><span class=\"pre\">django.contrib.staticfiles</span></code></a> as explained above,\n<a class=\"reference internal\" href=\"/en/4.1/ref/django-admin/#django-admin-runserver\"><code class=\"xref std std-djadmin docutils literal notranslate\"><span class=\"pre\">runserver</span></code></a> will do this automatically when <a class=\"reference internal\" href=\"/en/4.1/ref/settings/#std-setting-DEBUG\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">DEBUG</span></code></a> is set\nto <code class=\"docutils literal notranslate\"><span class=\"pre\">True</span></code>. If you don’t have <code class=\"docutils literal notranslate\"><span class=\"pre\">django.contrib.staticfiles</span></code> in\n<a class=\"reference internal\" href=\"/en/4.1/ref/settings/#std-setting-INSTALLED_APPS\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">INSTALLED_APPS</span></code></a>, you can still manually serve static files using the\n<a class=\"reference internal\" href=\"/en/4.1/ref/views/#django.views.static.serve\" title=\"django.views.static.serve\"><code class=\"xref py py-func docutils literal notranslate\"><span class=\"pre\">django.views.static.serve()</span></code></a> view.</p>\n<p>This is not suitable for production use! For some common deployment\nstrategies, see <a class=\"reference internal\" href=\"/en/4.1/howto/static-files/deployment/\"><span class=\"doc\">How to deploy static files</span></a>.</p>\n<p>For example, if your <a class=\"reference internal\" href=\"/en/4.1/ref/settings/#std-setting-STATIC_URL\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">STATIC_URL</span></code></a> is defined as <code class=\"docutils literal notranslate\"><span class=\"pre\">static/</span></code>, you can\ndo this by adding the following snippet to your <code class=\"docutils literal notranslate\"><span class=\"pre\">urls.py</span></code>:</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=\"w\"> </span><span class=\"nn\">django.conf</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">settings</span>\n<span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.conf.urls.static</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">static</span>\n\n<span class=\"n\">urlpatterns</span> <span class=\"o\">=</span> <span class=\"p\">[</span>\n    <span class=\"c1\"># ... the rest of your URLconf goes here ...</span>\n<span class=\"p\">]</span> <span class=\"o\">+</span> <span class=\"n\">static</span><span class=\"p\">(</span><span class=\"n\">settings</span><span class=\"o\">.</span><span class=\"n\">STATIC_URL</span><span class=\"p\">,</span> <span class=\"n\">document_root</span><span class=\"o\">=</span><span class=\"n\">settings</span><span class=\"o\">.</span><span class=\"n\">STATIC_ROOT</span><span class=\"p\">)</span>\n</code></pre></div>\n<aside class=\"admonition admonition-note\" role=\"note\">\n<p class=\"admonition-title\">Note</p>\n<p>This helper function works only in debug mode and only if\nthe given prefix is local (e.g. <code class=\"docutils literal notranslate\"><span class=\"pre\">static/</span></code>) and not a URL (e.g.\n<code class=\"docutils literal notranslate\"><span class=\"pre\">http://static.example.com/</span></code>).</p>\n<p>Also this helper function only serves the actual <a class=\"reference internal\" href=\"/en/4.1/ref/settings/#std-setting-STATIC_ROOT\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">STATIC_ROOT</span></code></a>\nfolder; it doesn’t perform static files discovery like\n<a class=\"reference internal\" href=\"/en/4.1/ref/contrib/staticfiles/#module-django.contrib.staticfiles\" title=\"django.contrib.staticfiles: An app for handling static files.\"><code class=\"xref py py-mod docutils literal notranslate\"><span class=\"pre\">django.contrib.staticfiles</span></code></a>.</p>\n<p>Finally, static files are served via a wrapper at the WSGI application\nlayer. As a consequence, static files requests do not pass through the\nnormal <a class=\"reference internal\" href=\"/en/4.1/topics/http/middleware/\"><span class=\"doc\">middleware chain</span></a>.</p>\n</aside>\n</section>\n<section id=\"serving-files-uploaded-by-a-user-during-development\">\n<span id=\"serving-uploaded-files-in-development\"></span><h2>Serving files uploaded by a user during development<a class=\"heading-anchor\" href=\"#serving-files-uploaded-by-a-user-during-development\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>During development, you can serve user-uploaded media files from\n<a class=\"reference internal\" href=\"/en/4.1/ref/settings/#std-setting-MEDIA_ROOT\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">MEDIA_ROOT</span></code></a> using the <a class=\"reference internal\" href=\"/en/4.1/ref/views/#django.views.static.serve\" title=\"django.views.static.serve\"><code class=\"xref py py-func docutils literal notranslate\"><span class=\"pre\">django.views.static.serve()</span></code></a> view.</p>\n<p>This is not suitable for production use! For some common deployment\nstrategies, see <a class=\"reference internal\" href=\"/en/4.1/howto/static-files/deployment/\"><span class=\"doc\">How to deploy static files</span></a>.</p>\n<p>For example, if your <a class=\"reference internal\" href=\"/en/4.1/ref/settings/#std-setting-MEDIA_URL\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">MEDIA_URL</span></code></a> is defined as <code class=\"docutils literal notranslate\"><span class=\"pre\">media/</span></code>, you can do\nthis by adding the following snippet to your <a class=\"reference internal\" href=\"/en/4.1/ref/settings/#std-setting-ROOT_URLCONF\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">ROOT_URLCONF</span></code></a>:</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=\"w\"> </span><span class=\"nn\">django.conf</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">settings</span>\n<span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.conf.urls.static</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">static</span>\n\n<span class=\"n\">urlpatterns</span> <span class=\"o\">=</span> <span class=\"p\">[</span>\n    <span class=\"c1\"># ... the rest of your URLconf goes here ...</span>\n<span class=\"p\">]</span> <span class=\"o\">+</span> <span class=\"n\">static</span><span class=\"p\">(</span><span class=\"n\">settings</span><span class=\"o\">.</span><span class=\"n\">MEDIA_URL</span><span class=\"p\">,</span> <span class=\"n\">document_root</span><span class=\"o\">=</span><span class=\"n\">settings</span><span class=\"o\">.</span><span class=\"n\">MEDIA_ROOT</span><span class=\"p\">)</span>\n</code></pre></div>\n<aside class=\"admonition admonition-note\" role=\"note\">\n<p class=\"admonition-title\">Note</p>\n<p>This helper function works only in debug mode and only if\nthe given prefix is local (e.g. <code class=\"docutils literal notranslate\"><span class=\"pre\">media/</span></code>) and not a URL (e.g.\n<code class=\"docutils literal notranslate\"><span class=\"pre\">http://media.example.com/</span></code>).</p>\n</aside>\n</section>\n<section id=\"testing\">\n<span id=\"staticfiles-testing-support\"></span><h2>Testing<a class=\"heading-anchor\" href=\"#testing\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>When running tests that use actual HTTP requests instead of the built-in\ntesting client (i.e. when using the built-in <a class=\"reference internal\" href=\"/en/4.1/topics/testing/tools/#django.test.LiveServerTestCase\" title=\"django.test.LiveServerTestCase\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">LiveServerTestCase</span></code></a>) the static assets need to be served along\nthe rest of the content so the test environment reproduces the real one as\nfaithfully as possible, but <code class=\"docutils literal notranslate\"><span class=\"pre\">LiveServerTestCase</span></code> has only very basic static\nfile-serving functionality: It doesn’t know about the finders feature of the\n<code class=\"docutils literal notranslate\"><span class=\"pre\">staticfiles</span></code> application and assumes the static content has already been\ncollected under <a class=\"reference internal\" href=\"/en/4.1/ref/settings/#std-setting-STATIC_ROOT\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">STATIC_ROOT</span></code></a>.</p>\n<p>Because of this, <code class=\"docutils literal notranslate\"><span class=\"pre\">staticfiles</span></code> ships its own\n<a class=\"reference internal\" href=\"/en/4.1/ref/contrib/staticfiles/#django.contrib.staticfiles.testing.StaticLiveServerTestCase\" title=\"django.contrib.staticfiles.testing.StaticLiveServerTestCase\"><code class=\"xref py py-class docutils literal notranslate\"><span class=\"pre\">django.contrib.staticfiles.testing.StaticLiveServerTestCase</span></code></a>, a subclass\nof the built-in one that has the ability to transparently serve all the assets\nduring execution of these tests in a way very similar to what we get at\ndevelopment time with <code class=\"docutils literal notranslate\"><span class=\"pre\">DEBUG</span> <span class=\"pre\">=</span> <span class=\"pre\">True</span></code>, i.e. without having to collect them\nusing <a class=\"reference internal\" href=\"/en/4.1/ref/contrib/staticfiles/#django-admin-collectstatic\"><code class=\"xref std std-djadmin docutils literal notranslate\"><span class=\"pre\">collectstatic</span></code></a> first.</p>\n</section>\n<section id=\"deployment\">\n<h2>Deployment<a class=\"heading-anchor\" href=\"#deployment\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p><a class=\"reference internal\" href=\"/en/4.1/ref/contrib/staticfiles/#module-django.contrib.staticfiles\" title=\"django.contrib.staticfiles: An app for handling static files.\"><code class=\"xref py py-mod docutils literal notranslate\"><span class=\"pre\">django.contrib.staticfiles</span></code></a> provides a convenience management command\nfor gathering static files in a single directory so you can serve them easily.</p>\n<ol class=\"arabic\">\n<li><p>Set the <a class=\"reference internal\" href=\"/en/4.1/ref/settings/#std-setting-STATIC_ROOT\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">STATIC_ROOT</span></code></a> setting to the directory from which you’d\nlike to serve these files, for example:</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=\"n\">STATIC_ROOT</span> <span class=\"o\">=</span> <span class=\"s2\">&quot;/var/www/example.com/static/&quot;</span>\n</code></pre></div>\n</li>\n<li><p>Run the <a class=\"reference internal\" href=\"/en/4.1/ref/contrib/staticfiles/#django-admin-collectstatic\"><code class=\"xref std std-djadmin docutils literal notranslate\"><span class=\"pre\">collectstatic</span></code></a> management command:</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>$ python manage.py collectstatic\n</code></pre></div>\n<p>This will copy all files from your static folders into the\n<a class=\"reference internal\" href=\"/en/4.1/ref/settings/#std-setting-STATIC_ROOT\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">STATIC_ROOT</span></code></a> directory.</p>\n</li>\n<li><p>Use a web server of your choice to serve the\nfiles. <a class=\"reference internal\" href=\"/en/4.1/howto/static-files/deployment/\"><span class=\"doc\">How to deploy static files</span></a> covers some common deployment\nstrategies for static files.</p></li>\n</ol>\n</section>\n<section id=\"learn-more\">\n<h2>Learn more<a class=\"heading-anchor\" href=\"#learn-more\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>This document has covered the basics and some common usage patterns. For\ncomplete details on all the settings, commands, template tags, and other pieces\nincluded in <a class=\"reference internal\" href=\"/en/4.1/ref/contrib/staticfiles/#module-django.contrib.staticfiles\" title=\"django.contrib.staticfiles: An app for handling static files.\"><code class=\"xref py py-mod docutils literal notranslate\"><span class=\"pre\">django.contrib.staticfiles</span></code></a>, see <a class=\"reference internal\" href=\"/en/4.1/ref/contrib/staticfiles/\"><span class=\"doc\">the staticfiles\nreference</span></a>.</p>\n</section>","rootId":"how-to-manage-static-files-e-g-images-javascript-css","toc":[{"title":"Configuring static files","anchor":"configuring-static-files","children":[]},{"title":"Serving static files during development","anchor":"serving-static-files-during-development","children":[]},{"title":"Serving files uploaded by a user during development","anchor":"serving-files-uploaded-by-a-user-during-development","children":[]},{"title":"Testing","anchor":"testing","children":[]},{"title":"Deployment","anchor":"deployment","children":[]},{"title":"Learn more","anchor":"learn-more","children":[]}],"breadcrumbs":[{"docname":"howto/index","title":"“How-to” guides","url":"/en/4.1/howto/"}],"prev":{"docname":"howto/overriding-templates","title":"How to override templates","url":"/en/4.1/howto/overriding-templates/"},"next":{"docname":"howto/static-files/deployment","title":"How to deploy static files","url":"/en/4.1/howto/static-files/deployment/"},"formats":{"html":"/en/4.1/howto/static-files/","markdown":"/en/4.1/howto/static-files.md","json":"/en/4.1/howto/static-files.json"},"source":"https://github.com/django/django/blob/stable/4.1.x/docs/howto/static-files/index.txt","official":"https://docs.djangoproject.com/en/4.1/howto/static-files/","inVersions":["dev","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","1.8"],"inLocales":["en","zh-hans","fr","ja","id","it","pt-br","ko","es","el","pl"]}