服务器错误(500)在heroku上部署Django

Server error (500) Django deployment on heroku

我在 settings.py 文件中将 debug 设置为 False(请注意,在我将其设置为 false 之前,一切正常)并且当我 运行 git push heroku master 并转到我的网站,主页可以正常工作,但我的所有页面都不是这样:在某些页面上,我收到一条错误消息 Server Error (500)

这是我的 settings.py 代码:

DEBUG = False
ALLOWED_HOSTS = ["hacka-labs.herokuapp.com"]

我注意到我传递 id 的网址不起作用

知道答案的请帮帮我

我遇到了类似的问题,很难弄清楚何时将 DEBUG 设置为 False。当我将它重新配置回 DEBUG = True 时,一切又恢复正常了。所以问题是

You don't generally see this error in development because when DEBUG = True, ManifestStaticFilesStorage switches to non-hashed urls.

你的问题的解决方案可能与我的不同。但是您可以通过更改 Django 项目的日志记录方法来找到问题,因此即使在 DEBUG = False 模式下 运行ning heroku logs -t -a <heroku-app> 时,您也可以在命令行中看到更多信息。

settings.py 中更改您的 django 日志记录设置如下:

LOGGING = {
    'version': 1,
    'disable_existing_loggers': False,
    'formatters': {
        'verbose': {
            'format': ('%(asctime)s [%(process)d] [%(levelname)s] '
                       'pathname=%(pathname)s lineno=%(lineno)s '
                       'funcname=%(funcName)s %(message)s'),
            'datefmt': '%Y-%m-%d %H:%M:%S'
        },
        'simple': {
            'format': '%(levelname)s %(message)s'
        }
    },
    'handlers': {
        'null': {
            'level': 'DEBUG',
            'class': 'logging.NullHandler',
        },
        'console': {
            'level': 'INFO',
            'class': 'logging.StreamHandler',
            'formatter': 'verbose'
        }
    },
    'loggers': {
        'django': {
            'handlers': ['console'],
            'level': 'DEBUG',
            'propagate': True,
        },
        'django.request': {
            'handlers': ['console'],
            'level': 'DEBUG',
            'propagate': False,
        },
    }
}

然后 运行 heroku logs -t -a <heroku-app> 并打开 url 你之前得到 500 错误的地方你会在日志中找到问题。希望对您有所帮助。


如果缺少一些静态文件,只需在 settings.py 中切换静态根目录,如下所示 STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles')。 运行 heroku run python manage.py collectstatic -a <heroku-app> 创建静态文件目录。

我有同样的错误。

我通过删除 settings.py

中的 import django heroku 解决了问题

我在 heroku 上部署 react 和 django 项目时遇到了同样的错误。 我已经调试了 2 天,做了所有的事情,比如允许的主机、静态文件、json、whitenoise 的事情,但仍然没有解决问题。

如果您的浏览器抛出错误 500,则在 settings.py 中设置 DEBUG=True。如果它在 index.html 处抛出 TemplateDoesNotExist 错误,那么更改 views.py 可能有助于解决该问题。不要忘记在部署前设置DEBUG=False

我通过更改 views.py 中的一些代码解决了它。

def index(request):

return render(request,'ur_app_name.html')  

def index(request):

some_variable_name=TemplateResponse(request,'ur_app_name.html',{})

return some_variable_name

别忘了在 views.py

之上导入这个
from django.template.response import TemplateResponse

我不知道我遇到的确切问题是什么,我猜这是一个 httpResponse 问题,因为服务器需要 http 请求而我们的本地机器不需要它。

这个错误的一些关键点:

  1. 确保在 settings.py 文件 ALLOWED_HOST 中提及您的域名
  2. set STATIC_ROOT=os.path.join(BASE_DIR, 'staticfiles') in settings.py,当 heroku 抛出一个 collecticstatic 错误,但我不确定。如果它仍然抛出 同样的错误然后禁用 collectstatic=1 命令(你可以找到 调试日志中的确切命令)不会创建 任何问题。
  3. 设置 whitenoise.middleware.WhiteNoiseMiddleware,在 MIDDLEWAREsettings.py,这可能会有所帮助。
  4. 如果您的项目使用 React 和 Django,则仅在 heroku 上添加构建包时选择 python。不要选择node.js.

这是我上传我的 heroku 项目的 github repository 你可以在这里找到可能有用的配置文件。

如果您的项目使用了 React 和 Django 并且以上建议没有帮助,这可能会有所帮助:

  • 检查.gitignore个文件,安装所有requirement.txt个文件 并在根目录中复制 package.json 文件。

package.json

中的脚本中设置 "build": "cd <project folder name>&& react-scripts build"

我的 index.html 和 manifest.json 在上面提到的 github 仓库中。 'staticfiles' 目录是使用“$ python manage.py collectstatic”在根文件夹中创建的。如果您的项目没有,请尝试复制我的 index.html 文件。 就这些了。

herokuapp link :https://sainterface.herokuapp.com/