网页静态文件找不到

在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目录

官网配置

  1. 确保django.contrib.staticfiles包含在您的 INSTALLED_APPS。

  2. 在您的设置文件中,定义STATIC_URL,例如:

STATIC_URL = '/static/'  
  1. 在模板中,使用static模板标记使用已配置的相对路径构建URL STATICFILES_STORAGE。
{% load static %}
<img src="{% static "my_app/example.jpg" %}" alt="My image"/>
  1. 将静态文件存储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)