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

mic*_*ael 5 django debugging production

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

与此方法类似.hovever这只适合部署.

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缺少简单的超全局.例如,在博客示例中,hostname是/ etc/hostname而不是vhost.

任何想法都赞赏.

编辑:

通过将/ path/to/django_in_debug /添加到mydomaincom.myprodserver.com vhost条目的sys.path,我有一个解决方法(但最好是我更喜欢一个可移植的解决方案).然后在settings.py文件中

try:
    from django_in_debug.settings import *
except:
    DEBUG = False
Run Code Online (Sandbox Code Playgroud)

T. *_*one 9

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

要实现这一点,您必须根据每个请求重新评估settings.py,正如您所知,这可能是一个非常糟糕的方向.根据Django自己的文档,在加载后修改网站的设置是一个禁忌(为了公平的人可以逃脱这一点,但是Django的官方立场是没有价值的).

这是给你的一个想法:

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

from settings import *

DEBUG = True
TEMPLATE_DEBUG = DEBUG
Run Code Online (Sandbox Code Playgroud)

从这里开始编写一个简单的中间件组件来捕获传入的请求.请求IP与settings.INTERNAL_IPS进行比较,如果找到匹配项,请求将重定向到debug.yourdomain.com.

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