【问题标题】:What is the need of providing STATIC_ROOT?提供 STATIC_ROOT 需要什么?
【发布时间】:2020-07-14 04:06:17
【问题描述】:

谁能向我解释在 django 项目中提供 STATIC_ROOT 的必要性?看起来, 如果我只声明 STATICFILES_DIRS 而不是 STATIC_ROOT,一切正常。

【问题讨论】:

  • 请注意,如果您只是将静态文件放在应用程序内的 static/ 目录中,您甚至不需要定义 STATICFILES_DIRS
  • 如果我们的项目不需要它们,为什么还要这样做呢?
  • @aNoNyMoUs django项目文件夹外有静态文件夹的情况,那么只需要定义STATICFILES_DIRS即可。

标签: django


【解决方案1】:

STATIC_ROOT 仅在生产中需要,因为 Django 开发服务器 runserver 负责直接从静态目录提供静态文件。

STATIC_ROOTpython manage.py collectstatic 将收集用于部署的静态文件的目录的绝对路径。

示例:STATIC_ROOT="/var/www/example.com/static/"

现在命令python manage.py collectstatic 会将所有静态文件(即在您的应用程序的静态文件夹中,所有路径中的静态文件)复制到目录/var/www/example.com/static/。现在你只需要在 apache 或 nginx..etc 上提供这个目录。

注意:您经常会看到将STATIC_ROOT 设置为os.path.join(BASE_DIR, 'static') 的示例。这是一种不好的做法,因为它会在您的源代码存储库中创建静态文件夹。始终将其设置为项目文件夹外部的路径,例如/var/www/example.com/static/ 当您的项目位于 /var/www/example.com/src/ 时。

【讨论】:

    【解决方案2】:

    当您在生产服务器上将 settings.py 中的 DEBUG 更改为 False 时,如果您不使用 STATIC_ROOT,则不会显示页面上的文件。是的,您必须按照上一个答案中所写的 collectstatic 进行操作

    【讨论】:

    • 另外,当我们在 html 中引用静态文件时,我们是指从通过 createstatic 创建的目录还是在 createstatic 中使用的源目录中的文件?
    猜你喜欢
    • 2020-10-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-20
    • 2018-01-30
    • 2010-10-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多