【问题标题】:Unable to perform collectstatic无法执行 collectstatic
【发布时间】:2014-06-06 14:11:11
【问题描述】:

我是 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')),
)

调试设置为真

DEBUG = True

我该如何解决这个问题?否则我缺少任何安装包?

【问题讨论】:

标签: python django django-staticfiles


【解决方案1】:

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

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

STATIC_URL = '/static/'

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

    )

【讨论】:

    【解决方案2】:

    试试这个,

    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

    【讨论】:

    • 谢谢 :) 工作!在我使用此应用程序之前,静态根为空。但它奏效了!现在可能是什么问题?
    • 您需要定义静态文件夹。因此所有静态文件都收集在该文件夹中。 You're using the staticfiles app without having set the STATIC_ROOT setting to a filesystem path
    【解决方案3】:

    我必须将STATIC_ROOTSTATIC_URL 放在STATICFILES_DIRS 声明之上。

    【讨论】:

      【解决方案4】:
      STATIC_ROOT = "/var/www/YourSiteFolder/static/"
      STATIC_URL = '/static/'
      

      https://docs.djangoproject.com/en/1.11/howto/static-files/#deployment

      【讨论】:

        【解决方案5】:

        也有这个错误。我修好了:

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

        【讨论】:

          【解决方案6】:

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

          【讨论】:

            【解决方案7】:
            STATIC_ROOT = os.path.join(BASE_DIR, 'assest')
            STATICFILES_DIR = [
            os.path.join(BASE_DIR, 'static')
            ]
            

            【讨论】:

            • 感谢您提供此代码 sn-p,它可能会提供一些有限的即时帮助。 proper explanation 将通过展示为什么这是解决问题的好方法,并使其对有其他类似问题的未来读者更有用,从而大大提高其长期价值。请edit您的回答添加一些解释,包括您所做的假设。
            • 有一个错字:“assets”
            猜你喜欢
            • 1970-01-01
            • 2018-02-19
            • 2012-08-08
            • 1970-01-01
            • 2021-12-12
            • 2016-12-23
            • 1970-01-01
            • 2012-12-24
            • 2016-02-01
            相关资源
            最近更新 更多