服务器错误(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 请求而我们的本地机器不需要它。
这个错误的一些关键点:
- 确保在
settings.py
文件 ALLOWED_HOST
中提及您的域名
- set
STATIC_ROOT=os.path.join(BASE_DIR, 'staticfiles')
in settings.py
,当 heroku 抛出一个
collecticstatic
错误,但我不确定。如果它仍然抛出
同样的错误然后禁用 collectstatic=1
命令(你可以找到
调试日志中的确切命令)不会创建
任何问题。
- 设置
whitenoise.middleware.WhiteNoiseMiddleware
,在 MIDDLEWARE
中 settings.py
,这可能会有所帮助。
- 如果您的项目使用 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/
我在 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 请求而我们的本地机器不需要它。
这个错误的一些关键点:
- 确保在
settings.py
文件ALLOWED_HOST
中提及您的域名 - set
STATIC_ROOT=os.path.join(BASE_DIR, 'staticfiles')
in settings.py
,当 heroku 抛出一个collecticstatic
错误,但我不确定。如果它仍然抛出 同样的错误然后禁用collectstatic=1
命令(你可以找到 调试日志中的确切命令)不会创建 任何问题。 - 设置
whitenoise.middleware.WhiteNoiseMiddleware
,在MIDDLEWARE
中settings.py
,这可能会有所帮助。 - 如果您的项目使用 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/