如何将django调试工具栏设置为仅适用于某些用户?

时间:2011-07-01 13:58:40

标签: django django-debug-toolbar

马上:是的我知道INTERNAL_IPS。

我即将在工作集成和测试中打开我的django应用程序。我知道会有调试和大量的修改和/或优化,所以我很想拥有Django Debug Toolbar。但是,我宁愿不为我的所有同事(他们是'客户')提供这些服务。

INTERNAL_IP设置对我不起作用的原因(顺便说一下:我的开发计算机上有静态IP)是我使用Nginx作为反向代理并使用{{3}服务}。由于反向代理,使用127.0.0.1的internal_ip将DjDT显示给网络上的任何计算机并使用该IP是我自己能够看到它的唯一方法。

我正在寻找的是获取我的IP或我的登录名是唯一一个访问工具栏的方法。我曾经看过一个关于用户名限制访问的帖子但是我找不到......

作为一个侧面问题 - 任何人都知道为什么工具栏不能在IE中呈现?对我而言,它只是在页面底部显示为表格。

3 个答案:

答案 0 :(得分:44)

尝试:

def show_toolbar(request):
    return not request.is_ajax() and request.user and request.user.username == "yourusername"

DEBUG_TOOLBAR_CONFIG = {
    'SHOW_TOOLBAR_CALLBACK': 'projectname.settings.show_toolbar',
    # Rest of config
}

答案 1 :(得分:9)

接受的答案不再正确。较新版本的工具栏需要SHOW_TOOLBAR_CALLBACK键的值为具有该函数的完整导入路径的字符串。因此,如果您要在settings.py文件中定义回调函数,则必须添加:

DEBUG_TOOLBAR_CONFIG = {
    'SHOW_TOOLBAR_CALLBACK': 'projectname.settings.show_toolbar',
}

答案 2 :(得分:1)

如果你面对No .rsplit() Error。新解决方案:

因为SHOW_TOOLBAR_CALLBACK现在是一个虚线字符串路径而不支持可调用。

修改您的settings.py

def custom_show_toolbar(request):
     return True  # Always show toolbar, for example purposes only.

DEBUG_TOOLBAR_CONFIG = {
    'SHOW_TOOLBAR_CALLBACK': 'your_project_name.settings.custom_show_toolbar',
}