无法执行静电消除


73

我是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

我怎样才能解决这个问题?还有其他缺少的安装软件包吗?


Answers:


150

尝试这个,

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


谢谢:)工程!在使用静态根为empty的此应用程序之前。但这有效!现在可能是什么问题?
user3383301 2014年

您需要定义静态文件夹,因此所有静态文件都收集在该文件夹中。You're using the staticfiles app without having set the STATIC_ROOT setting to a filesystem path
dhana 2014年

10

您必须在settings.py中的STATIC_ROOT中提供路径,在其中收集所有静态文件,例如:

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

STATIC_URL = '/static/'

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

    )

1

也有这个错误。我解决了:

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')

1

您可以在任何子文件夹中创建“静态”文件夹,并在其中包含必需的文件。在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 将在父应用程序文件夹中创建一个新的静态文件夹


0

我只好把STATIC_ROOTSTATIC_URL上述STATICFILES_DIRS声明。



0
STATIC_ROOT = os.path.join(BASE_DIR, 'assest')
STATICFILES_DIR = [
os.path.join(BASE_DIR, 'static')
]

2
感谢您提供此代码段,它可能会提供一些有限的即时帮助。通过说明为什么这是一个很好的解决方案,正确的解释将大大提高其长期价值,对于其他存在类似问题的读者来说,这样做将更为有用。请编辑您的答案以添加一些解释,包括您所做的假设。
编码

有一个错字:“资产”
JulienD
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.