无法执行 collectstatic

86 投票
9 回答
84512 浏览
提问于 2025-04-18 03:43

我刚接触django!当我使用命令 python manage.py collectstatic 时,出现了这个错误

django.core.exceptions.ImproperlyConfigured: You're using the staticfiles app without having set the STATIC_ROOT setting to a filesystem path

不过我可以成功启动服务器。

我的静态文件声明是:

STATIC_ROOT = ''

STATIC_URL = '/static/'


STATICFILES_DIRS = (

    ('assets', os.path.join(PROJECT_DIR, '../static')),
)

而且调试模式设置为true

DEBUG = True

我该怎么解决这个问题?或者我是不是缺少什么安装包?

9 个回答

1

我需要把 STATIC_ROOTSTATIC_URL 放在 STATICFILES_DIRS 声明的上面。

2

我也遇到过这个错误。我是这样解决的:

STATIC_URL = '/static/'
if DEBUG:
   STATICFILES_DIRS = [
   os.path.join(BASE_DIR, 'static'),
   ]
else:
   STATIC_ROOT = os.path.join(BASE_DIR,'static')

MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
3

你可以在任何子文件夹里创建一个叫做'静态'的文件夹,并把需要的文件放进去。

在settings.py文件中添加以下几行代码:

PROJECT_DIR = os.path.dirname(os.path.abspath(__file__))
STATIC_ROOT = os.path.join(PROJECT_DIR, 'static')
STATIC_URL = '/static/'

运行 python manage.py collectstatic 之后,你的主应用文件夹里会生成一个新的静态文件夹。

10

你需要在settings.py文件中指定一个路径,这个路径是用来存放所有静态文件的,通常叫做STATIC_ROOT。例如:

STATIC_ROOT = "app-root/repo/wsgi/static"

STATIC_URL = '/static/'

STATICFILES_DIRS = (
    ('assets', 'app-root/repo/wsgi/openshift/static'),

    )
176

试试这个,

PROJECT_DIR = os.path.dirname(os.path.abspath(__file__))
STATIC_ROOT = os.path.join(PROJECT_DIR, 'static')

看看这个链接:https://docs.djangoproject.com/en/dev/ref/settings/#std:setting-STATIC_ROOT

撰写回答