Python Django:为什么我的静态文件没有显示出来,当DEBUG=False时总是给我一个404错误?

Python Django:为什么我的静态文件没有显示出来,当DEBUG=False时总是给我一个404错误?,python,django,python-3.x,django-staticfiles,Python,Django,Python 3.x,Django Staticfiles,我正在我的Windows机器上工作,试图为一个名为“门户”的项目开发多个应用程序。在处理它之后,我设置了DEBUG=False,现在我所有的静态文件在加载任何页面后都会给我一个404错误。在CMD中运行python manage.py runserver时,我在加载页面时得到: [02/Dec/2018 14:10:14] "GET /account/sign-in HTTP/1.1" 200 6249 [02/Dec/2018 14:10:14] "GET /static/fonts/font

我正在我的Windows机器上工作,试图为一个名为“门户”的项目开发多个应用程序。在处理它之后,我设置了DEBUG=False,现在我所有的静态文件在加载任何页面后都会给我一个404错误。在CMD中运行
python manage.py runserver
时,我在加载页面时得到:

[02/Dec/2018 14:10:14] "GET /account/sign-in HTTP/1.1" 200 6249
[02/Dec/2018 14:10:14] "GET /static/fonts/fonts.css HTTP/1.1" 404 96
[02/Dec/2018 14:10:14] "GET /static/css/argon.css HTTP/1.1" 404 94
[02/Dec/2018 14:10:14] "GET /static/branding/logo.png HTTP/1.1" 404 98
我看了20多篇关于这一点的帖子,这些帖子大部分都是相同的,我遵循了他们的所有步骤,例如:

  • 我已经在我的settings.py文件中设置了这些文件:
    STATIC\u URL='/STATIC/'
    STATICFILES\u DIRS=['portal/STATIC/']
    (我在文件夹中有一个静态文件夹,其中包含像settings.py这样的文件)和
    STATIC\u ROOT=os.path.join(BASE\u DIR,“STATIC”)
  • 我已经调用了
    python manage.py
我甚至创建了一个新的Django测试项目,并完成了上述所有步骤,他们正在为这个新的测试项目工作。我甚至删除了
\uuuu pycache\uuuu
中的所有文件,并重置了迁移和数据库文件


除了上面提到的其他解决方案外,还有其他安全的(我见过其他人使用诸如--unsecure之类的欺骗)解决方案来修复我的项目,使其能够投入生产吗?

因此,我更深入地了解了Jon Clements和其他人所说的关于Django在
DEBUG=False
时如何不再处理静态文件的内容,您需要一个HTTP Web服务器来为这些文件提供服务。这实际上是真的。我以前从未想过,因为我的其他项目仍然提供静态文件,但可能是因为我的浏览器缓存了这些文件

这是另一篇证明这一点的帖子:

以下是一个基于托管代码的位置为静态文件提供服务的解决方案:

  • 如果没有HTTP Web服务器,您可以使用为静态文件提供服务(但我不建议将其用于生产)
  • 使用Apache或任何其他HTTP Web服务器,您可以通过修改配置文件为静态文件提供服务(在此处了解更多信息:)
  • 如果您和我一样使用Azure,我建议您使用Blob存储来处理所有静态和媒体文件(媒体帖子:)

在这里了解有关Django静态文件部署(官方文档)的更多信息:

只需添加@Alvin Tang, 为了在生产中测试项目,当
DEBUG=False
时,可以使用:
python manage.py runserver--unsecure
运行服务器。如果静态设置正确(大多数情况下都是正确的),这将假定错误的调试设置,模拟生产环境,并按预期部署为静态文件服务的项目(或者至少我认为它是这样做的)。
测试并使用Django==3.0.6

您是否通过nginx/apache等为静态文件夹提供服务?内置Web服务器仅用于开发。这就是为什么它在调试关闭时不提供静态文件的原因。因为当
DEBUG
设置为
False
django停止为您提供静态文件。在生产环境中,只需服务器配置中的几行就可以了。@JonClements我没有通过HTTP Web服务器为静态文件夹提供服务。@AlvinTang well Django在不处于调试模式时不会像其他人提到的那样为您提供服务。。。