Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如果DEBUG=False,为什么Django不加载静态文件?_Django - Fatal编程技术网

如果DEBUG=False,为什么Django不加载静态文件?

如果DEBUG=False,为什么Django不加载静态文件?,django,Django,我的CSS没有加载,然后我把DEBUG改为True,它就工作了 我的问题是,如果我有一个实际的服务器,并且DEBUG=False,CSS将不会加载 调试设置与静态文件有什么关系?无论调试是真是假,它都应该加载静态文件。在调试模式下,Django将提供所有服务,这样您就不必再为Apache/Nginx之类的其他东西操心了 在生产模式下,使用Python提供静态内容是一种资源浪费,Django假设您将设置一个web服务器来提供静态内容。见: 对于您需要的命令 有关开发期间静态文件的详细信息,请参阅

我的CSS没有加载,然后我把DEBUG改为True,它就工作了

我的问题是,如果我有一个实际的服务器,并且DEBUG=False,CSS将不会加载


调试设置与静态文件有什么关系?无论调试是真是假,它都应该加载静态文件。

在调试模式下,Django将提供所有服务,这样您就不必再为Apache/Nginx之类的其他东西操心了

在生产模式下,使用Python提供静态内容是一种资源浪费,Django假设您将设置一个web服务器来提供静态内容。见:

对于您需要的命令 有关开发期间静态文件的详细信息,请参阅 尤其是

有关生产过程中静态文件的详细信息 您可以在DEBUG=False中使用生产服务器中不建议使用的静态:

python manage.py runserver --insecure
此外,还可以使用提供静态内容。为此,您需要通过pip install whitenoise安装它,然后在您的设置中添加一个新的中间件,如下所示:

MIDDLEWARE = [
  # 'django.middleware.security.SecurityMiddleware',
  'whitenoise.middleware.WhiteNoiseMiddleware',
  # ...
]

使用whitenoise是安全的,而且是服务静态文件的标准。如果您不想使用反向代理服务器,您应该使用服务器来服务所有内容,包括静态内容。您的意思是说实际服务器与本地主机服务器不同?这就像是额外的开销,设置web服务器只是为了提供静态文件lol,因为我来自php后台。正如我所说的荒谬。如果我在生产中使用DEBUG=True,那么它就不再是生产服务器了。这就是为什么没有人提出这一点。浏览最后一个链接并正确设置生产服务器。在PHP中无法做到这一点。当您编写PHP时,Apache以透明的方式为您完成。说Django不做PHP之类的事情是愚蠢的,就像说汤是愚蠢的,因为它们很难用叉子吃。不,首先用叉子喝汤是你的错。我说了为什么会这样,我的第一个链接说了为什么会这样:从Python提供静态文件效率极低,而且可能不安全。这仅用于本地开发,不应在生产中使用。在生产中提供静态文件有一个适当的程序,Amadan也有链接,并且在文档中有很好的文档记录。如果您有任何与编程相关的问题,那么人们可以在这里回答,否则嘲笑框架就没有意义了。我问为什么会有这种行为?为什么不让django服务于静态文件,不管调试是真是假?因为它效率极低,而且可能不安全。据Docsno所言,如果django不在生产中加载静态文件,为什么要制作应用程序?