【问题标题】:Heroku Debug Flag not stopping django debuggingHeroku 调试标志不停止 django 调试
【发布时间】:2020-05-05 14:09:54
【问题描述】:

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

首先我试图阻止它来自settings.py

DEBUG=False

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

两者都不工作。

我也尝试设置env 变量:

heroku config:set DEBUG=False

heroku config:unset DEBUG

两者都没有帮助。

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

希望有人可以帮助解决这个问题。

【问题讨论】:

    标签: django debugging heroku disable


    【解决方案1】:

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

    heroku config:set DEBUG_VALUE="False"

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

    DEBUG = (os.environ.get('DEBUG_VALUE') == 'True')

    由于DEBUG_VALUE 设置为“False”,DEBUG 在生产中将是 False。

    【讨论】:

    • 这会在部署时产生一些错误:File "/app/.heroku/python/lib/python3.8/site-packages/django/contrib/staticfiles/storage.py", line 132, in _url hashed_name = hashed_name_func(*args) File "/app/.heroku/python/lib/python3.8/site-packages/django/contrib/staticfiles/storage.py", line 423, in stored_name raise ValueError("Missing staticfiles manifest entry for '%s'" % clean_name) ValueError: Missing staticfiles manifest entry for 'default.jpg' 但是我删除了这个 MIDDLEWARE:whitenoise.middleware.WhiteNoiseMiddleware 并且它已部署但仍然看到调试页面。
    • 我不明白 whitenoise.middleware.WhiteNoiseMiddleware 和调试变量之间的关系。
    • 没有关系。这是一个不同的错误,因为您的静态文件配置不正确
    【解决方案2】:

    终于问题解决了,其实有两个问题:

    - 第一个: 我用过

    从 django.contrib.staticfiles.storage 导入 staticfiles_storage

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

    staticfiles_storage.url('img/default.jpg')

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

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

    结论:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-01-16
      • 2012-02-16
      • 2015-05-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多