白噪声不添加随机字符串

时间:2018-06-30 21:58:29

标签: django heroku whitenoise

我刚刚在生产环境中放置了我的Django应用程序的另一个副本。我的“旧”应用程序与“新”应用程序之间唯一的区别是,旧应用程序在“传统” Heroku中运行,而新应用程序在“ Dockerized” Heroku中运行。

最奇怪的事情正在发生。我使用Whitenoise服务我的静态资产。在较旧的应用程序上,在生成的页面中,指向我的静态资产的链接如下所示:

<link href="/static/assets/css/bootstrap.min.9f236e18d5bf.css" rel="stylesheet">

但是在我的新应用中,缺少了那个小字符串(9f236e18d5bf)。看起来像:

<link href="/static/assets/css/bootstrap.min.css" rel="stylesheet">

结果,我的新网站上没有任何样式表。

在Dockerized版本中是否还需要采取其他步骤才能使其正常工作?还是我缺少所需的STATIC *设置值的组合。

我的临时解决方法是将python manage.py collectstatic --noinput添加到Dockerfile.web,然后设置:

STATICFILES_STORAGE = 'django.contrib.staticfiles.storage.StaticFilesStorage' 

哪个可行,但我想知道星期一是否会遇到扩展问题。

1 个答案:

答案 0 :(得分:0)

看来答案分为两个部分,而我每个人在不同的时间都工作。

  1. 确保在您的Dockerfile.web中拥有此文件:

    RUN python manage.py collectstatic --noinput CMD CMD gunicorn --bind 0.0.0.0:8000 <project-name>.wsgi

请注意,您想对RUN命令使用collectstatic。显然,只有Dockerfile中的 last CMD值才有意义。

  1. settings.py中拥有

    STATICFILES_STORAGE = 'whitenoise.storage.CompressedManifestStaticFilesStorage'

该设置将导致collectstatic将哈希值添加到每个文件的名称中,这些文件的名称复制到STATICFILES_ROOT中指定的目录中。