Django Heroku服务器错误页面500仅在Debug = False时出现,当Debug为True时一切工作正常。为什么?

9 浏览
0 Comments

Django Heroku服务器错误页面500仅在Debug = False时出现,当Debug为True时一切工作正常。为什么?

我的Djangoproject名为myDebug,我的Django应用程序名为Deb,它在Heroku上,网址是meindebug.herokuapp.com。在settings.py中,我导入了os和django_heroku模块,并设置了基本目录、密钥、调试模式、允许的主机和已安装的应用程序。还定义了中间件、根URL配置、模板配置和数据库配置。另外还包括了静态文件的配置和一些密码验证器的设置。在wsgi.py中,我导入了os、get_wsgi_application和WhiteNoise模块,并设置了环境变量和应用程序。在Procfile中,我设置了web进程和gunicorn命令。在Pipfile中,我定义了依赖项和Python版本。我已经尝试过将ALLOWED_HOSTS设置为['*'],但没有任何变化。我已经努力修复这个问题已经两周了,但很不幸,没有成功。我找不到真正的解决方法,只是一些零零散散的信息,没有人给出真正的解决方案。

0
0 Comments

问题的原因是在Django的设置中,当调试模式(Debug)设置为False时,Django将不会公开任何错误信息给用户,而是显示一个默认的服务器错误页面(Error page 500)。然而,当调试模式设置为True时,Django会显示详细的错误信息,以帮助开发者调试代码。

解决方法是进行以下几个步骤:

1. 首先,运行命令`python manage.py collectstatic`,以收集所有静态文件。

2. 然后,在Heroku上的Config Variables中设置`COLLECTSTATIC = 1`,以确保在部署时自动收集静态文件。

3. 在模板中引用静态文件时,确保文件路径不以斜杠开头。例如,正确的写法是`{% static "MyApp/Images/Picture.png" %}`,而不是`{% static "/MyApp/Images/Picture.png" %}`。斜杠在这里是问题的根源。

4. 如果网站中有一个favicon图标,需要在HTML头部指定其路径。例如,正确的写法是``。

通过以上步骤,您可以解决在Django Heroku部署中,调试模式(Debug)为False时出现的服务器错误页面500的问题。

0
0 Comments

问题的原因可能是在代码中有一个调用模板标签“static”的HTML注释。移除该注释可能会解决500错误的问题(同时,该错误也没有被记录)。

解决方法是移除代码中的注释,具体操作如下:

将以下代码:

<!-- <img src="{% static 'main_website/images/image.jpg' %}" alt=""> -->

修改为:

<img src="{% static 'main_website/images/image.jpg' %}" alt="">

这样,当将Django的Debug设置为False时,就不会出现500错误页面了。

0
0 Comments

当Django的Debug模式关闭时,如果出现500错误页面,而在Debug模式开启时一切都正常,可能的原因是某个CSS文件被链接,但原始文件已被删除。解决方法是确保没有链接任何不存在的外部文件。

以下是整理后的文章:

当Django的Debug模式关闭时出现500错误页面,而在Debug模式开启时一切正常,可能的原因是某个CSS文件被链接,但原始文件已被删除。解决方法是确保没有链接任何不存在的外部文件。

这个问题的出现可能是由于在开发过程中删除了某个CSS文件,但在代码中仍然存在链接该文件的代码。在Debug模式开启时,Django会自动捕获并处理任何错误,因此即使链接的CSS文件不存在,也不会出现问题。但是,当Debug模式关闭时,Django不会显示详细错误信息,而是显示一个简单的500错误页面。

要解决这个问题,我们需要检查项目中的代码,确保没有链接任何不存在的外部文件。具体步骤如下:

1. 首先,打开项目中的HTML模板文件,查找是否有链接CSS文件的代码。通常,这些代码位于``标签中的``标签中。

2. 对于每个链接的CSS文件,检查其路径是否正确,并确保该文件在项目中存在。如果文件不存在,需要删除对应的链接代码。

以下是一个示例HTML模板文件的代码:




    My Website
    


    

Welcome to my website!

This is some content.

在这个示例中,我们可以看到一个链接到名为`styles.css`的CSS文件的代码。如果该文件不存在,就会导致500错误页面的出现。要解决这个问题,我们需要确认`styles.css`文件是否存在,并删除对应的链接代码。

通过检查所有HTML模板文件中的链接代码,并确保链接的文件都存在,我们可以解决这个问题。当Debug模式关闭时,Django就不会再尝试加载不存在的外部文件,从而避免了500错误页面的出现。

总结起来,当Django的Debug模式关闭时出现500错误页面,而在Debug模式开启时一切正常,通常是由于链接了不存在的外部文件所导致的。通过检查代码,并确保链接的文件都存在,可以解决这个问题。

0