目前我的settings.py关于设置的静态文件
STATIC_ROOT = ''
STATICFILES_FINDERS = (
'django.contrib.staticfiles.finders.FileSystemFinder',
'django.contrib.staticfiles.finders.AppDirectoriesFinder',
)
STATICFILES_DIR = (
os.path.join(BASE_DIR, 'static'),
)
STATIC_URL = '/static/'
通过阅读文档和各种博客,我的理解是STATIC_ROOT
是静态文件的所在。它是collectstatic
将收集用于部署的静态文件(OUTPUT)的目录的绝对路径。我不知道该把这个值作为什么
对于STATICFILES_DIR
此设置定义了在启用FileSystemFinder finder时静态文件应用程序将遍历的其他位置。所以我需要STATICFILES_FINDER
中的settings.py
字段,并且在该字段中
('django.contrib.staticfiles.finders.FileSystemFinder',
'django.contrib.staticfiles.finders.AppDirectoriesFinder')
但是,默认STATICFILES_DIR
未包含在我的settings.py
中,因此我将其添加进来。
对于STATIC_URL
,引用位于STATIC_ROOT中的静态文件时使用的URL。我只是把它作为默认设置,因为我不确定如何编辑它。
我不知道如何编辑有关静态文件的settings.py,以便将它们显示在网页上。将静态文件包含到网页中的“最佳实践”方法是什么?
ex:{% static "static/css/default.css" %}
我也读了一些关于命名空间的内容,但我也对此感到困惑
例如:
STATICFILES_DIR = (
("asserts", os.path.join(BASE_DIR, 'static')),
)
答案 0 :(得分:1)
最佳做法是将每个应用程序的静态文件保存在自己的“静态”目录中,并在每次静态文件更改时运行manage.py collect_static
。
然后,如果您使用默认存储,您的文件将被复制到STATIC_ROOT目录中。 (但您可以使用自定义存储,例如在Amazon S3云上存储静态文件)
最后,STATIC_URL定义了如何从外部访问静态文件。在django dev服务器的情况下 - 它有静态文件应用程序,它在STATIC_URL位置下提供服务。对于生产服务器,您肯定希望使用nginx / apache或amazon S3 / cloudfront(或其他云服务)提供静态文件。如果你使用nginx / apache,你必须设置STATIC_URL,这样{% static "static/css/default.css" %}
将被替换为相对于STATIC_ROOT的url,同时你应该在nginx / apache设置中覆盖这个STATIC_URL位置,所以当最终用户尝试访问它,它获得静态文件服务甚至没有触摸django。在自定义存储的情况下 - 此存储可能提供它自己的URL(对于前面的S3云)。