【问题标题】:Django DEBUG weirdness in IIS: DEBUG=False still runs in debug modeIIS 中的 Django DEBUG 异常:DEBUG=False 仍然在调试模式下运行
【发布时间】:2023-03-22 06:20:01
【问题描述】:

总结:即使设置设置为 DEBUG = False,我的站点仍以 DEBUG 模式运行。

仅供参考,我对此进行了研究,并在这些相关问题中发现了一些出色的回答和测试想法(这些问题都没有帮助,尽管从逻辑上讲它们应该有):django DEBUG=False still runs in debug mode Heroku Django DEBUG Setting not applied


IIS FastCGIHandler 环境变量:

姓名 = DJANGO_DEBUG
值 = False

注意:无论 production.py 中的设置如何,删除此环境变量都会导致 500 错误。

settings/production.py:

在我的 FastCGIHandler 中使用设置为 False 的环境变量在 settings/production.py 中尝试了不同的场景:

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

    • 结果:站点在调试模式下运行
  2. DEBUG = bool(os.environ.get('DJANGO_DEBUG', False))

    • 结果:站点在调试模式下运行
  3. DEBUG = False (硬编码 w/o env var)

    • 结果:网站无法正常工作,返回 500 页,错误跟踪显示 ValueError: Missing staticfiles manifest entry for 'images/favicon/manifest.json',这是一个非常奇怪且具有误导性的错误。

采取的其他措施:

  • 我已经检查了 base.py 和 production.py 文件中对 DEBUGDJANGO_SETTINGS 变量的任何其他引用,它们很清楚。我还搜索了 IIS 服务器与之交互的其他 .py 文件(wsgi.py、manage.py)。
  • 我什至尝试在 base.py 文件中设置DEBUG = False,结果相同。
  • 我安装了 python-decouple 并尝试使用它。
  • 我安装了 django-environ 并尝试使用它(我在此服务器上运行了另一个 django 站点,使用 django-environ 来访问运行良好的环境变量。)

我从来没有见过这样的事情。其他环境变量工作正常,所以它似乎在这个布尔值附近。为什么在 python 设置中硬编码 DEBUG 变量不起作用???

我们将不胜感激任何帮助找出下一步看哪里的帮助。

【问题讨论】:

    标签: python django python-3.x environment-variables


    【解决方案1】:

    环境变量总是字符串。非空字符串始终为布尔值 True,即使它包含字符串“False”。

    您需要将值与字符串进行比较:

    DEBUG = (os.environ.get('DJANGO_DEBUG') == "True")
    

    或者,当您想在非调试模式下运行时,只需从 IIS 设置中完全删除该变量。

    另一个错误不是“离奇或误导”,而是静态文件的问题,在非调试模式下使用 ManifestStorage 后端之前需要修复该问题。

    【讨论】:

    • 感谢您的回复,丹尼尔。我说错误具有误导性的原因是因为调试时没有错误。发现静态文件没有问题。调试模式如何改变这个错误?
    • 抱歉,这并不能解决问题。更改我的 DEBUG 语句以匹配您的语句仍然会给我 500 错误。而且,我已经说过从 IIS 中删除变量会导致同样的问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-08
    • 1970-01-01
    • 2021-09-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-08
    相关资源
    最近更新 更多