错误信息 (staticfiles.E002) The STATICFILES_DIRS setting should not contain the STATIC_ROOT setting 指出了问题的原因:在您的 settings.py 文件中,STATICFILES_DIRS 设置包含了 STATIC_ROOT。这两个设置应该指向不同的目录,因为 STATIC_ROOT 是Django在执行 collectstatic 命令时将所有静态文件收集到的地方,而 STATICFILES_DIRS 是Django在查找项目中的静态文件时会搜索的目录列表。

下面是如何修复此问题的步骤:

  1. 打开您的 settings.py 文件。

  2. 查找 STATIC_ROOTSTATICFILES_DIRS 设置。

    通常,它们可能如下所示:

    STATIC_URL = '/static/'
    STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles')
    STATICFILES_DIRS = [
        os.path.join(BASE_DIR, "static"),
    ]
    

    在上面的例子中,STATIC_ROOT 是存放通过 collectstatic 命令收集到的静态文件的地方,而 STATICFILES_DIRS 是Django搜索您自定义静态文件的目录。

  3. 确保 STATIC_ROOT 的路径与 STATICFILES_DIRS 中任何路径都不相同。

    例如,如果您有:

    STATIC_ROOT = os.path.join(BASE_DIR, 'static')
    STATICFILES_DIRS = [
        os.path.join(BASE_DIR, "static"),
    ]
    

    您需要更改 STATIC_ROOTSTATICFILES_DIRS 中的一个,以确保它们不冲突,如下所示:

    # 更改STATIC_ROOT到不同于STATICFILES_DIRS中的路径
    STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles')
    
    # STATICFILES_DIRS保持不变或者指向其他自定义静态文件目录
    STATICFILES_DIRS = [
        os.path.join(BASE_DIR, "static"),
    ]
    
  4. 保存 settings.py 文件的更改。

  5. 重新运行 python manage.py collectstatic 命令。

确保您的 STATIC_ROOT 目录在 .gitignore 文件中被忽略(如果您使用Git),因为这个目录通常不应该被包含在版本控制中。

经过这些修正后,您的静态文件应该能够正确收集,Django后台应该能够正确显示CSS样式。

Logo

瓜分20万奖金 获得内推名额 丰厚实物奖励 易参与易上手

更多推荐