1

我是第一次开发 Django 应用程序,我已经达到了对应用程序在开发环境中的功能感到满意的阶段。要部署,我必须设置 DEBUG=False,这带来了一些挑战。我了解到生产服务器不会像开发服务器那样提供静态文件。我学会了py manage.py collectstatic命令的使用。我设置了 WhiteNoise,到目前为止,我在开发服务器中使用 DEBUG=False 运行应用程序没有任何问题。剩下的最后一个障碍是提供 scss 文件,如 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 上。

4

0 回答 0