在 Django 中,惯例是将应用程序特定的所有静态文件(即 css、js)放入名为的文件夹中static。所以结构看起来像这样:
mysite/
manage.py
mysite/ --> (settings.py, etc)
myapp/ --> (models.py, views.py, etc)
static/
In mysite/settings.py
I have:
STATIC_ROOT = 'staticfiles'
所以当我运行命令时:
python manage.py collectstatic
它创建一个名为的文件夹staticfiles
在根级别(因此与myapp/
)
这有什么意义呢?这不是只是创建我所有静态文件的副本吗?
将多个应用程序中的静态文件收集到单个路径中
嗯,一个 Djangoproject可能会使用几个apps,所以在那里你只有一个myapp
,实际上可能是myapp1
, myapp2
, etc
通过将它们从各个应用程序内部复制到单个文件夹中,您可以将前端 Web 服务器(例如 nginx)指向该单个文件夹STATIC_ROOT
并从单个位置提供静态文件,而不是将 Web 服务器配置为从多个路径提供静态文件。
持久化 URL清单静态文件存储 https://docs.djangoproject.com/en/3.2/ref/contrib/staticfiles/#manifeststaticfilesstorage
关于 MD5 哈希值附加到文件名以进行版本控制的注释:它不是默认行为的一部分collectstatic
, as settings.STATICFILES_STORAGE
默认为StaticFilesStorage
(这不会那样做)
MD5 哈希值将生效,例如如果你将其设置为使用ManifestStaticFilesStorage
,这会添加该行为。
此存储的目的是继续提供旧文件,以防万一
有些页面仍然引用这些文件,例如因为它们被缓存
您或第三方代理服务器。此外,如果
您想要将未来的 Expires 标头应用到已部署的文件中
加快后续页面访问的加载时间。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)