2015-10-20 84 views
1

它工作得非常好,但没有更多。Django静态文件 - 无法找到嵌套文件

我有以下的文件结构,我试图找到以下文件:

[thisProject] 
    ----blog 
     ----static 
      ----blog 
       ----scss 
        ----slick.scss [<---cant find this file] 
      ----platform 

我已经试过python manage.py findstatic slick.scss -v3

,我收到以下:

Looking in the following locations: 
    D:\git\thisProject\thisProject\env\lib\site-packages\django\contrib\admin\static 
    D:\git\thisProject\thisProject\env\lib\site-packages\wagtail\wagtailadmin\static 
    D:\git\thisProject\thisProject\env\lib\site-packages\wagtail\wagtaildocs\static 
    D:\git\thisProject\thisProject\env\lib\site-packages\wagtail\wagtailsnippets\static 
    D:\git\thisProject\thisProject\env\lib\site-packages\wagtail\wagtailusers\static 
    D:\git\thisProject\thisProject\env\lib\site-packages\wagtail\wagtailimages\static 
    D:\git\thisProject\thisProject\env\lib\site-packages\wagtail\wagtailembeds\static 
    D:\git\thisProject\thisProject\env\lib\site-packages\wagtail\wagtailforms\static 
    D:\git\thisProject\thisProject\blog\static 
    D:\git\thisProject\thisProject\env\lib\site-packages\allauth\socialaccount\providers\facebook\static 
    d:\home\yourusername\webapps\skunkworks_static_rockitt 

如果您注意到底部的第三行 - 它正在查看正确的目录,但它仍然无法找到它。

我的设置如下:

STATICFILES_FINDERS = (
    'django.contrib.staticfiles.finders.FileSystemFinder', 
    'django.contrib.staticfiles.finders.AppDirectoriesFinder', 
    'compressor.finders.CompressorFinder', 
) 

INSTALLED_APPS = (


    'django.contrib.admin', 
    'django.contrib.auth', 
    'django.contrib.contenttypes', 
    'django.contrib.sessions', 
    'django.contrib.messages', 
    'django.contrib.staticfiles', 
    'django.contrib.humanize', 
    more apps here, 
) 
DEBUG = True 

任何想法,为什么它不能找到这个文件?

回答

1

Django会不会看在你的应用程序的静态目录的子目录,除非你告诉它:

python manage.py findstatic blog/scss/slick.scss

这是故意的,以便您可以通过在自己的应用程序中镜像其目录结构来覆盖核心模板。

顺便说一句,这个命名空间是一个good idea generally

现在我们也许可以直接把我们的静态文件在程序my_app /静态/(而不是创造另一个程序my_app子目录)脱身,但它实际上是一个坏主意。 Django将使用它找到的名称匹配的第一个静态文件,并且如果在不同的应用程序中有相同名称的静态文件,Django将无法区分它们。我们需要能够将Django指向正确的位置,并且最简单的方法是通过命名它们来确保它是正确的。也就是说,通过将这些静态文件放入为应用程序本身命名的另一个目录中。

+0

thanks @solarissmoke – AndrewO