Django findstatic:找不到匹配的文件

时间:2015-09-05 16:30:34

标签: python django virtualenv django-staticfiles django-settings

前一段时间,我试图在Django中使用“collectstatic”来提供我的静态文件并且失败了。现在我终于试图让我的静态文件在我的开发环境中正常运行。我无法弄清楚出了什么问题。

当我运行python manage.py findstatic images/add.png

控制台返回:

base path: C:\Projects\AlmondKing\AlmondKing
static files dirs: C:\Projects\AlmondKing\AlmondKing\static
No matching file found for 'images/add.png'.

目录路径正确,但仍无法找到我的文件。我尝试了许多不同的设置配置无济于事。谁能发现我的问题?以下是我认为的所有相关设置:

BASE_DIR = os.path.abspath(os.path.dirname(__file__))

DEBUG = True

INSTALLED_APPS = (
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'AlmondKing.InventoryLogs',
    'AlmondKing.FinancialLogs',
    'AlmondKing.AKGenius',
)

STATIC_URL = '/static/'
STATIC_FILES_DIRS = (
    os.path.join((BASE_DIR), "static")
)

print("base path:", BASE_DIR)
print("static files dirs:", STATIC_FILES_DIRS)

编辑:我找到了findstatic --verbosity 2 command,唯一被搜索的目录是:C:\Users\Adam\Envs\AlmondKing\lib\site-packages\django\contrib\admin\static

显然它只是在我的虚拟环境中查找,而不是我的项目目录。这是正常的Django行为吗?

2 个答案:

答案 0 :(得分:3)

设置为STATICFILES_DIRS,而非STATIC_FILES_DIRS

您在设置中也缺少逗号。没有逗号,它被视为字符串而不是元组。

应该是:

STATICFILES_DIRS = (
    os.path.join(BASE_DIR, "static"),
)

答案 1 :(得分:0)

最后! Referring here,我了解到静态文件目录必须位于单个应用程序的目录中。我在项目根目录中有静态目录。我把它移到app目录中,现在正在运行。

整个项目将使用这些相同的静态文件。如果有人知道,我是否需要在每个应用程序的目录中都有它们的副本,或者我的项目的所有应用程序是否可以共享一个静态目录?谢谢!