网页静态文件找不到
在19-2-18的开始,突然发现网页的静态文件找不到了
在将static目录移动到app目录内之后,发现网页可以正常显示。
原来static目录是和app目录一个层级
针对此问题的思考
STATIC_URL = ‘/static/’
注意此处是url,即对于静态文件的定位,这是必要的前提配置
STATIC_URL的定义制定了静态资源的url,具体指各个app下的static目录
STATIC_ROOT = os.path.join(BASE_DIR, “static”)
STATIC_ROOT是总的static目录,主要用于在运行 collectstatic命令时存储所有的静态文件
STATICFILES_DIRS = [os.path.join(BASE_DIR, “static”), ‘mysite/static’,]
STATICFILES_DIRS是一个列表,存放各个app的static目录及公共的static目录
官网配置
确保django.contrib.staticfiles包含在您的 INSTALLED_APPS。
在您的设置文件中,定义STATIC_URL,例如:
STATIC_URL = '/static/'
- 在模板中,使用static模板标记使用已配置的相对路径构建URL STATICFILES_STORAGE。
{% load static %}
<img src="{% static "my_app/example.jpg" %}" alt="My image"/>
- 将静态文件存储static在应用程序中调用的文件夹中。例如my_app/static/my_app/example.jpg。
对于模板中的{% load static%}
当在模板中使用过load static之后,再次使用static时,将会使用STATICFILES_FINDERS寻找静态文件,其默认值为:
[
'django.contrib.staticfiles.finders.FileSystemFinder',
'django.contrib.staticfiles.finders.AppDirectoriesFinder',
]
对此的解释是,将会从STATICFILES_DIRS的目录中以及每个app下的static目录中寻找静态文件。
在url后加入+ static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
(要在setting定义 MEDIA_URL MEDIA_ROOT)