我已经使用Heroku Django项目模板在Heroku上设置了一个Django项目。Heroku的模板使用白雪公主来收集位于我的项目根目录上的/静态/目录中的静态文件。
这对我的生产环境很好;每次我将新文件推到服务器上时,Heroku都会运行"manage.py收藏品“。但是,在本地开发时会遇到麻烦:每次更改静态文件(例如css)时,在看到开发服务器上的更改之前,我都必须手动运行"python“。
有没有一种简单的方法可以在我的本地机器上禁用whitenoise,这样我就不必每次看到对本地静态文件的更改时都运行"python manage.py收藏品“吗?
我尝试创建一个单独的"development_settings.py“文件,并删除该文件中对whitenoise的所有引用,但是它不起作用,因为whitenoise仍然在wsgi.py中引用,这会导致错误。
发布于 2015-12-28 14:43:32
正是出于这个原因,WhiteNoise有一个名为WHITENOISE_AUTOREFRESH的设置。
来自WhiteNoise文档
WHITENOISE_AUTOREFRESH:在响应之前,重新检查文件系统以查看是否有任何文件已经更改。这是设计用于开发中,可以方便地获取对静态文件的更改,而无需重新启动服务器。出于性能和安全方面的原因,不应在生产中使用此设置。
它的默认设置是settings.DEBUG的值,因此如果您正在运行开发服务器,默认情况下它应该是打开的。
发布于 2015-08-11 17:16:12
看起来,默认的Heroku模板指定了WhiteNoise的旧版本。如果你跑
pip install --upgrade whitenoise您应该会发现,在开发过程中(即当settings.DEBUG是True)时,它会自动获取对静态文件的更改。
发布于 2015-08-10 04:19:56
虽然我没有找到在我的开发服务器上禁用whitenoise的简单方法,但我确实找到了一个方便的解决方法,可以简化整个过程:
在您的.bash_profile文件中添加一个新的命令别名(如果您正在使用虚拟环境进行开发,则添加bin/activate ),该命令别名既运行收藏品,又同时启动服务器:
alias launch='python manage.py collectstatic --noinput; foreman start'https://stackoverflow.com/questions/31911496
复制相似问题