Heroku调试标志未停止django调试

Heroku调试标志未停止django调试,django,debugging,heroku,disable,Django,Debugging,Heroku,Disable,我目前在heroku有Django项目,但我试图停止调试模式,但不幸的是它不起作用 首先,我尝试从settings.py阻止它: DEBUG=False DEBUG=os.environ.get('DEBUG',False) 两者都不起作用 我还尝试设置env变量: heroku-config:set-DEBUG=False heroku配置:取消调试 两者都没有帮助 我试图在settings.py中为测试分配错误的debug值,这导致部署崩溃 希望有人能帮上忙。最简单的方法就是如下设置hero

我目前在heroku有Django项目,但我试图停止调试模式,但不幸的是它不起作用

首先,我尝试从
settings.py阻止它:

DEBUG=False

DEBUG=os.environ.get('DEBUG',False)

两者都不起作用

我还尝试设置
env
变量:

heroku-config:set-DEBUG=False

heroku配置:取消调试

两者都没有帮助

我试图在settings.py中为测试分配错误的debug值,这导致部署崩溃


希望有人能帮上忙。

最简单的方法就是如下设置heroku值:

heroku config:set DEBUG_VALUE=“False”

然后在settings.py中测试存储的字符串值,如下所示:

DEBUG=(os.environ.get('DEBUG\u VALUE')=='True')


由于
DEBUG\u值
设置为“False”,因此生产中
DEBUG
将为False。

最简单的方法是按如下方式设置heroku值:

heroku config:set DEBUG_VALUE=“False”

然后在settings.py中测试存储的字符串值,如下所示:

DEBUG=(os.environ.get('DEBUG\u VALUE')=='True')


由于
DEBUG\u值
设置为“False”,因此生产中
DEBUG
将为False。

问题最终得到解决,实际上有两个问题:

-第一个: 我曾经

从django.contrib.staticfiles.storage导入staticfiles\u存储

在我的模型文件中获取静态文件url

staticfiles\u storage.url('img/default.jpg')

这在heroku的collectstatic过程中导致了一个问题,djanogo不知道在哪里可以找到它的清单文件,所以我删除了它并在html模板中处理它

-第二个问题: 我根据的建议禁用了静态,但这造成了很大的混乱,我后来意识到,当调试为真时,静态文件将从
静态文件\u DIRS
提供,而如果调试为假,静态文件将从
静态根目录
提供,因此当我关闭调试时,它试图从
静态根目录
获取文件,下面是手动收集静态文件的技巧收集到名为staticfiles的文件夹(您的设置将被heroku设置覆盖),而如果您启用collectstatic heroku会将静态文件收集到/tmp/dir,则在这两种情况下,您的应用程序都会尝试从/tmp/获取文件,如果您手动收集静态文件,则这些文件不存在

结论:

  • 最好不要在Django代码中使用静态文件url
  • 如果在将项目部署到heroku期间collectstaic出现任何问题,请尝试修复它,而不是禁用它

我知道这有点长,但希望它会有用。

问题最终得到解决,实际上有两个问题:

-第一个: 我曾经

从django.contrib.staticfiles.storage导入staticfiles\u存储

在我的模型文件中获取静态文件url

staticfiles\u storage.url('img/default.jpg')

这在heroku的collectstatic过程中导致了一个问题,djanogo不知道在哪里可以找到它的清单文件,所以我删除了它并在html模板中处理它

-第二个问题: 我根据的建议禁用了静态,但这造成了很大的混乱,我后来意识到,当调试为真时,静态文件将从
静态文件\u DIRS
提供,而如果调试为假,静态文件将从
静态根目录
提供,因此当我关闭调试时,它试图从
静态根目录
获取文件,下面是手动收集静态文件的技巧收集到名为staticfiles的文件夹(您的设置将被heroku设置覆盖),而如果您启用collectstatic heroku会将静态文件收集到/tmp/dir,则在这两种情况下,您的应用程序都会尝试从/tmp/获取文件,如果您手动收集静态文件,则这些文件不存在

结论:

  • 最好不要在Django代码中使用静态文件url
  • 如果在将项目部署到heroku期间collectstaic出现任何问题,请尝试修复它,而不是禁用它

我知道这有点长,但希望它会有用。

这会在部署时产生一些错误:
文件/app/.heroku/python/lib/python3.8/site packages/django/contrib/staticfiles/storage.py”,第132行,在_urlhashed\u name=hashed\u name\u func(*args)文件中“/app/.heroku/python/lib/python3.8/site packages/django/contrib/staticfiles/storage.py”,第423行,在存储的\u名称中,出现值错误(“缺少'%s'%clean\u名称的staticfiles清单条目”)ValueError:缺少'default.jpg'的staticfiles清单条目
,但是我删除了这个中间件:whitenoise.MIDDLEWARE.WhiteNoiseMiddleware,它已部署,但仍然看到调试页面。我不理解whitenoise.MIDDLEWARE.WhiteNoiseMiddleware和调试变量之间的关系。没有关系。这是一个不同的问题由于未正确配置静态文件而导致的ent错误这会在部署时产生一些错误:
File”/app/.heroku/python/lib/python3.8/site packages/django/contrib/staticfiles/storage.py“,第132行,在_urlhashed_name=hashed_name_func(*args)文件中”/app/.heroku/python/lib/python3.8/site packages/django/contrib/staticfiles/storage.py”,第423行,在存储的\u名称中,出现值错误(“缺少'%s'%clean\u名称的staticfiles清单条目”)ValueError:缺少'default.jpg'的staticfiles清单条目
,但是我删除了这个中间件:whitenoise.MIDDLEWARE.WhiteNoiseMiddleware,它已部署,但仍然看到调试页面。我不明白这与什么有关