问题描述
这可能是一个愚蠢的问题,但这只是没有点击我的脑袋.
This is probably a stupid question, but it's just not clicking in my head.
在Django中,惯例是将所有特定于您应用的静态文件(即CSS,JS)放入名为 static 的文件夹中.所以结构看起来像这样:
In Django, the convention is to put all of your static files (i.e css, js) specific to your app into a folder called static. So the structure would look like this:
mysite/
manage.py
mysite/ --> (settings.py, etc)
myapp/ --> (models.py, views.py, etc)
static/
在mysite/settings.py
中,我有:
STATIC_ROOT = 'staticfiles'
因此,当我运行命令时:
So when I run the command:
python manage.py collectstatic
它将在根级别创建一个名为staticfiles
的文件夹(与myapp/
相同的目录)
It creates a folder called staticfiles
at the root level (so same directory as myapp/
)
这有什么意义?它不只是创建我所有静态文件的副本吗?
What's the point of this? Isn't it just creating a copy of all my static files?
推荐答案
将多个应用程序中的静态文件收集到单个路径中
好吧,一个Django 项目可能会使用多个 apps ,所以虽然那里只有一个myapp
,但实际上可能是myapp1
,myapp2
等
Collect static files from multiple apps into a single path
Well, a single Django project may use several apps, so while there you only have one myapp
, it may actually be myapp1
, myapp2
, etc
通过将它们从单个应用程序内部复制到单个文件夹中,您可以将前端Web服务器(例如nginx)指向该单个文件夹STATIC_ROOT
并从单个位置提供静态文件,而不是将Web服务器配置为从多个路径提供静态文件.
By copying them from inside the individual apps into a single folder, you can point your frontend web server (e.g. nginx) to that single folder STATIC_ROOT
and serve static files from a single location, rather than configure your web server to serve static files from multiple paths.
有关将MD5哈希附加到文件名以进行版本控制的说明:这不是collectstatic
的默认行为的一部分,因为settings.STATICFILES_STORAGE
的默认行为是StaticFilesStorage
(不会这样做)
A note about the MD5 hash being appended to the filename for versioning: It's not part of the default behavior of collectstatic
, as settings.STATICFILES_STORAGE
defaults to StaticFilesStorage
(which doesn't do that)
MD5哈希将在例如如果您将其设置为使用ManifestStaticFilesStorage
,则该广告会宣传该行为.
The MD5 hash will kick in e.g. if you set it to use ManifestStaticFilesStorage
, which ads that behavior.
这篇关于Django的collectstatic有什么意义?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!