【问题标题】:STATIC_ROOT setup in Django 1.8Django 1.8 中的 STATIC_ROOT 设置
【发布时间】:2016-02-24 10:06:03
【问题描述】:

我试过了,我无法按照官方文件进行设置... 我在这里附上IMG,请给我建议,问题出在哪里。enter image description here

或者,用字典树结构给我简单的步骤。

谢谢。

# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/1.8/howto/static-files/

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


STATICFILES_DIRS = (
    os.path.join(BASE_DIR, 'static'),
    # '/var/www/static/',
)

【问题讨论】:

  • 您的 STATIC_ROOT 值存在问题,您不应添加单引号,因为 os.path.join 是一个函数
  • 你为什么一直发截图?您的代码是 text,请在此处发布。
  • 很抱歉,我在上面发布了代码。 @丹尼尔·罗斯曼

标签: python django static django-staticfiles django-1.8


【解决方案1】:

STATIC_ROOT 应该不带引号:

STATIC_ROOT = os.path.join(BASE_DIR, 'static')

此外,STATIC_ROOT 文件夹的名称不应与 STATICFILES_DIR 文件夹相同,因此您应该将其命名为 staticfiles 之类的名称:

STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles/')

【讨论】:

  • 我是按照你的指示...但是同样的错误!!
【解决方案2】:

在声明STATIC_ROOT 不是文件系统路径时,错误很明显。 Django 要求 STATIC_ROOT 是机器上文件夹位置的绝对路径。此错误可能意味着您生成的 STATIC_ROOT 是部分或相对路径。 BASE_DIR 的值是多少?在设置STATIC_ROOTprint(STATIC_ROOT) 的行之后,看看它是什么值。

尝试如下设置BASE_DIR

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

其他错误

上线

STATIC_ROOT = 'os.path.join(BASE_DIR, 'static')'

你的值被单引号括起来。 os.path.join() 是一个函数调用。删除引号并像这样更改行:

STATIC_ROOT = os.path.join(BASE_DIR, 'static')

另外,STATIC_ROOT 不能包含在 STATICFILES_DIRS 的文件列表中。考虑将 STATIC_ROOT 文件夹设置为:

STATIC_ROOT = os.path.join(BASE_DIR, 'static_root')

【讨论】:

【解决方案3】:

STATIC_ROOT = 'os.path.join(BASE_DIR, 'static')' 是一个错误的字符串。

应该是STATIC_ROOT = os.path.join(BASE_DIR, 'static')

【讨论】:

    【解决方案4】:

    STATIC_ROOT = 'os.path.join(BASE_DIR, 'static_root', 'static') 无法工作。

    试试这个:

    # define your base directory
    # It will be `absolute/path/to/demo3`
    BASE_DIR = os.path.dirname(os.path.dirname(__file__))
    STATIC_URL = '/static/'
    # define where your static files will be collected
    # It will be `absolute/path/to/demo3/static`
    STATIC_ROOT = os.path.join(BASE_DIR, 'static')
    # keep it empty for the moment
    STATICFILES_DIRS = (
    )
    

    你必须了解STATICFILES_DIRS角色:

    您的项目可能还会包含未绑定到的静态资产 一个特定的应用程序。除了在您的内部使用 static/ 目录 应用程序,您可以在您的 设置文件,Django 也会在其中查找静态文件。

    我建议你仔细阅读 Django 文档:Managing static files

    【讨论】:

    • STATIC_ROOT = os.path.join(BASE_DIR, 'static_root', 'static') 这个工作。谢谢
    【解决方案5】:

    在settings.py文件中使用最新版本的python和django创建项目时,默认有from pathlib import Path声明。所以在这种情况下不需要使用os.path

    from pathlib import Path # Import First
    
    STATIC_ROOT = Path.joinpath(BASE_DIR, 'static_collected')
    

    【讨论】:

    • 一般来说,如果答案包含对代码的用途的解释,以及为什么在不介绍其他人的情况下解决问题的原因,答案会更有帮助。
    【解决方案6】:

    我添加了一行代码,它对我有用,我希望它在未来不会痛苦:)

    import os
    

    【讨论】:

      【解决方案7】:

      请记住在您的根目录中创建一个static 文件夹,并在您的project 文件夹中创建static 文件夹。那么您的文件结构将是:

      demo3
          /demo3/staticfiles # collection folder for all static files
          /static            # root static folder
          /userForms/static  # your app static files
      # OR
      demo3
          /demo3
          /static_files     # collection folder for all static files
          /static           # root static folder
          /userForms/static # your app static files
          
      

      将此添加到您的 settings.py
      STATIC_ROOT = os.path.join(BASE_DIR, 'demo3', 'staticfiles')
      或取决于您想要收集文件夹的位置
      STATIC_ROOT = os.path.join(BASE_DIR, 'static_files')

      运行python manage.py collectstatic

      然后它将捆绑项目staticfiles或根static_files文件夹中的所有静态文件,具体取决于您想要它们的位置。

      【讨论】:

        猜你喜欢
        • 2018-03-05
        • 2018-08-01
        • 1970-01-01
        • 2015-10-11
        • 2021-07-31
        • 2015-07-29
        • 2012-08-25
        • 1970-01-01
        • 2012-06-03
        相关资源
        最近更新 更多