【问题标题】:Django static files : use only /static/ directoryDjango 静态文件:仅使用 /static/ 目录
【发布时间】:2018-04-14 18:47:08
【问题描述】:

我有一个 Django live 版本在生产中,我使用 Django manager.py 在本地开发。 我无法为我的静态文件找到正确的配置设置。

我所有的静态文件都在项目根目录的 /static/ 上,因为所有子应用都使用相同的样式表等等。

STATICFILES_DIRS = (
    os.path.join(BASE_DIR, 'staticfiles'),
)

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

在我的实时版本中:它可以工作,因为我有一个 NGINX 规则,允许直接访问 /static/。

但是当我想在本地工作时,静态文件是 404,带有 Debug True 和 False。

我没有看到我对 staticfiles 目录的需求的兴趣(但我在这里可能有一个错误的想法)。

是否可以在 /static/(css、img、js 等)的子目录中拥有所有静态文件,并在本地和实时生产中设置可行的设置,而无需在 settings.py 中切换某些内容进行部署?

感谢您的帮助:)

【问题讨论】:

  • 不太清楚你在问什么。通常你只需将它们放在你想要的静态下,这样它们就可以被 manage.py 和 devserver 访问,然后运行 ​​collectstatic 将它们复制到某个地方以供前端服务......
  • 我做了一个“collectstatic”,我的所有文件都在 /static/ 目录中,但在本地无法访问:/
  • 如果我没记错的话,django 不会让您的 STATIC_URLSTATIC_ROOT 名称相同。这意味着您不能将静态文件放在名为“static”的文件夹中,也不能将 url 设置为“static”。所以我认为如果您更改 url 或静态文件夹,它应该可以工作。在生产中 nginx 处理这个并且它不会到达 django 所以我认为这就是它在那里工作的原因。试试看,然后告诉我。
  • 不抱歉,它不起作用。我把 STATIC_URL = '/s/'。如果我创建一个 collectstatic,Django 会返回:0 个静态文件复制到 '/Volumes/Data/Projets/sitepro/sitepro/static',1197 个未修改。

标签: python django nginx static


【解决方案1】:

我找到了解决方案:

将我的静态目录从 Django 的根目录移动到我的主应用程序的文件夹后,我使用该设置创建了一个 collectstatic:

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

【讨论】:

    猜你喜欢
    • 2015-02-05
    • 1970-01-01
    • 1970-01-01
    • 2020-12-11
    • 2015-08-28
    • 1970-01-01
    • 1970-01-01
    • 2013-01-10
    • 2022-01-25
    相关资源
    最近更新 更多