gpt4 book ai didi

django - 如何在生产服务器上非侵入式地触发 django DEBUG

转载 作者:行者123 更新时间:2023-12-02 10:00:46 26 4
gpt4 key购买 nike

我正在寻找一种安全的方法来触发 django 生产服务器上的 INTERNAL_IPS 请求的 DEBUG,而不需要更改 settings.py 文件。主要是为了让工具栏可供一些设计人员检查实时数据/媒体上的问题,但不依赖他们在完成后重置设置。

与此方法类似。然而这仅适合部署。

http://nicksergeant.com/blog/django/automatically-setting-debug-your-django-app-based-server-hostname

过去在基于 php 的系统上,我有 mydomain.com 和演示 mydomaincom.myprodserver.com,其中 prodserver 域可以自动运行基于 $_SERVER['HOST_NAME'] 的调试代码,但 django 缺乏简单的 super 全局。例如,在博客示例中,主机名是/etc/hostname 而不是虚拟主机。

任何想法表示赞赏。

编辑:

通过将/path/to/django_in_debug/添加到 mydomaincom.myprodserver.com vhost 条目的 sys.path 中,我有一种解决方案(但理想情况下我更喜欢更便携的解决方案)。然后在settings.py文件中

try:
from django_in_debug.settings import *
except:
DEBUG = False

最佳答案

您要求做的事情比看起来要复杂一些。您想要显示请求级别发生的某些 INTERNAL_IPS 的调试信息。但是,您正在谈论位于站点级别的settings.py。

要实现这一目标,您必须根据每个请求重新评估 settings.py,正如您所知,这可能是一个非常糟糕的方向。根据 Django 自己的文档,在加载后修改站点的设置是不允许的(公平地说,人们可以这样做,但对于 Django 的官方立场来说,这毫无值(value))。

这里有一个想法给你:

您有 2 个 WSGI 文件。第一个 WSGI 文件指向您的主 settings.py,apache 将流量从 www.yourdomain.com 定向到它。第二个 WSGI 文件指向 debug_settings.py,apache 将流量从 debug.yourdomain.com 重定向到它。 debug_settingsg.py 看起来像这样:

from settings import *

DEBUG = True
TEMPLATE_DEBUG = DEBUG

从这里您可以编写一个简单的中间件组件来捕获传入的请求。将请求 IP 与 settings.INTERNAL_IPS 进行比较,如果发现匹配,则请求将重定向到 debug.yourdomain.com。

这允许您保留网站的 1 个副本,但可以根据请求级别值更改网站级别设置。

关于django - 如何在生产服务器上非侵入式地触发 django DEBUG,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1943583/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com