问题描述
我是第一次开发 Django 应用程序,我已经达到了一个阶段,我对应用程序在开发环境中的功能感到满意。为了部署我必须设置 DEBUG=False 这带来了一些挑战。我了解到生产服务器不会像开发服务器那样提供静态文件。我学习了 py manage.py collectstatic
命令的使用。我设置了 WhiteNoise,到目前为止,我在开发服务器中使用 DEBUG=False 运行应用程序没有任何问题。剩下的最后一个障碍是将 scss 文件作为 css.css 提供。为此,我使用了 django-libsass 模块。我设置了 django-compressor,将 'compressor' 添加到 INSTALLED_APPS 列表中,如下设置 STATICFILES_FINDERS 和 COMPRESS_PRECOMPILERS:
STATICFILES_FINDERS = [
'django.contrib.staticfiles.finders.FileSystemFinder','django.contrib.staticfiles.finders.AppDirectoriesFinder','compressor.finders.CompressorFinder',]
COMPRESS_PRECOMPILERS = (
('text/x-scss','django_libsass.SassCompiler'),)
最后,我使用所需的 {% compress css %}
标签更新了模板。在运行 collectstatic
时,我注意到文件是在相应的文件夹 /static/CACHE/css/output.RANDOM_NUM.css
中生成的。这就是奇怪的问题发生的地方。我第一次运行开发服务器时,没有提供 CSS 文件:
WARNING - Not Found: /static/CACHE/css/output.RANDOM_NUMBER.css
请求返回 404。尽管我能够验证该文件确实在该路径上可用。然后我关闭服务器并重新启动它,这一次准确地呈现页面并提供文件。谁能告诉我为什么会这样..?
此外,对于不受 django-compressor/django-libsass 模块影响的其他静态文件,这不是问题。它们在服务器本身的第一次启动时提供。
这不是一次性的问题。我一遍又一遍地重复这个过程。 1. 我删除了“静态”文件夹及其内容。 2. 我跑 py manage.py collectstatic
,和 3. 我跑 py manage.py runserver
。未提供 CSS。 4. ctrl + c
并运行 py manage.py runserver
。提供 CSS。问题重演
另一件需要注意的是,运行 py manage.py runserver --insecure
不会遇到这个问题,尽管我猜这是一种完全不同的机制。
我想知道我是否应该忽略这一点。服务器始终在第二次运行中提供 CSS 文件。但问题的持久性让我想知道我是否应该在部署应用程序之前解决这个问题。我计划在 Heroku 上部署。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)