Django中类似Laravel dd()功能的调试工具求助
解决Django中类似Laravel
dd()的对象调试需求 兄弟,我当初刚从Laravel转Django的时候也被这个问题卡过!找不到像dd(object)那样能直观打印对象类型、值和内部成员的工具,试过pprint()、simplejson这些都差点意思,{% debug %}又太杂乱。针对你用Django 2.0.5调试django.contrib.messages的需求,给你推荐几个能在浏览器里以易读格式深度展示对象结构的第三方包:
1. django-debug-toolbar(首推!)
这绝对是Django调试的标配工具,功能全到离谱,完美解决你的需求:
- 安装后,浏览器页面侧边会多出一个工具栏,里面的Debug面板能查看请求上下文里的所有对象,包括你要的
messages - 它会把对象以可折叠的树形结构展示,每个属性的类型、值都清晰明了,点一下就能展开看内部成员,比
{% debug %}整洁100倍 - 安装步骤超简单:
- 用pip装:
pip install django-debug-toolbar - 在
settings.py的INSTALLED_APPS里加debug_toolbar MIDDLEWARE里添上debug_toolbar.middleware.DebugToolbarMiddleware- 配置
INTERNAL_IPS = ['127.0.0.1'](本地调试用这个就行)
- 用pip装:
- 另外它还有专门的Messages面板,能直接看所有消息的内容、级别,调试
django.contrib.messages的时候更方便!
2. django-dd(对标Laravel dd()的专属工具)
这个包就是照着Laravel的dd()做的,用法几乎一模一样,上手零成本:
- 安装:
pip install django-dd - 在视图里导入:
from dd import dd - 直接在代码里写
dd(messages),它会立刻在浏览器里输出格式化后的对象结构,包含所有细节,看完还能选择继续执行请求或者终止,完全就是你要的那种“一键调试”体验
3. 临时自定义方法(应急用)
如果不想装包,也可以写个简单的自定义函数临时用:
from django.http import HttpResponse import json from django.core.serializers.json import DjangoJSONEncoder def dd(obj): return HttpResponse(json.dumps(obj, cls=DjangoJSONEncoder, indent=4, sort_keys=True), content_type='application/json')
在视图里调用return dd(messages)就能在浏览器里看到格式化的JSON结构,但这个只能序列化可JSON化的对象,不如前面两个包能展示所有内部成员,适合应急。
总之,首推django-debug-toolbar,不仅能解决这次的问题,以后调试其他对象、查看SQL查询、请求信息都能用;如果只是临时调试单个对象,django-dd更轻便。
内容的提问来源于stack exchange,提问作者Amarjit Singh
相关产品推荐
相关产品推荐

