如何设置Django读取静态文件存储在模板的静态子文件夹中

时间:2014-10-25 10:48:50

标签: django

我尝试使用静态将图像转换为模板,如果我在下面使用它可以工作。

<img src="{% static "images/capture.jpg" %}" alt="working image"/>

但是我希望能够在没有类型子文件夹“images /”的情况下执行此操作

<img src="{% static "capture.jpg" %}" alt="notworking image"/>

这是我在设置中的内容

破折号&gt;静态&gt;图片&gt; capture.jpg
短划线&gt;静态&gt; css&gt; mystyle.css
短划线&gt;模板&gt;破折号&gt; home.html

INSTALLED_APPS = (
      ...
    'django.contrib.staticfiles',

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

    STATIC_URL = '/static/'
    STATICFILES_DIRS = (
        # os.path.join(PROJECT_ROOT, '../dash/static',),   # ( Got same result as below )
        os.path.join(PROJECT_ROOT, 'static'),            # ( ok )
    )

阅读文档;我尝试在我的设置中使用下面的代码,但它不起作用 - 不确定我是否在这里遗漏了一些东西。任何建议都会很棒:

STATIC_ROOT = ''
STATIC_URL = '/static/'
STATICFILES_DIRS = (
    os.path.join('static'),
)

1 个答案:

答案 0 :(得分:1)

您可以通过将images文件夹显式放在以下设置中来实现:

STATICFILES_DIRS = (
    os.path.join(PROJECT_ROOT, '../dash/static',),
    os.path.join(PROJECT_ROOT, '../dash/static/images',),
)

但我建议不要这样做。您应该有一个static文件夹,其中包含图像,css文件和javascript文件的所有静态文件都位于相应的子文件夹中。

Djangos默认也是查看每个子应用程序的静态文件夹。

我在settings.py文件中有以下设置,它只是起作用:

STATICFILES_DIRS = (
)

STATICFILES_FINDERS = (
    "django.contrib.staticfiles.finders.FileSystemFinder",
    "django.contrib.staticfiles.finders.AppDirectoriesFinder",
)
除非你有充分的理由,否则我不会惹这个。