Django模板:如何在页面上完整转储对象

Posted

技术标签:

【中文标题】Django模板:如何在页面上完整转储对象【英文标题】:Django Template: how to dump object on page in full 【发布时间】:2012-12-11 04:49:08 【问题描述】:

尽管有数据,但以下模板没有输出任何内容。

我的问题是……我是否可以将“点”对象的内容转储到模板中,以便查看其中的内容?

模板.py

 <h3>% trans "Points" %</h3>

    % if points %
        <p>% trans "Total Points" %:  points.Points </p>


        <table>
            <thead>
            <tr>
                <th>% trans "Transaction" %</th>
                <th>% trans "Status" %</th>
                <th>% trans "Points" %</th>
            </tr>
            </thead>
            <tbody>
            % for item in points.Points_items.all %
                <tr>
                    <td> item.transaction_description </td>
                    <td> item.get_status_display </td>
                    <td> item.points </td>
                </tr>
            % endfor %
            </tbody>
        </table>

【问题讨论】:

【参考方案1】:

我为此使用了自定义标签:

# Custom tag for diagnostics
@register.simple_tag()
def debug_object_dump(var):
    return vars(var)

% load extra_tags %
...
% for thing in things %
  <pre>% debug_object_dump thing %</pre>
% endfor %

【讨论】:

【参考方案2】:

把这个贴在上面:

<h1>| points |</h1>

如果| 之间没有任何内容,则为空。

【讨论】:

我刚得到这个 [, ] 那是否意味着它是空的? 没什么吗?或者其他的东西?如果您希望它逐项列出点的内容,请创建 __str____unicode__ 方法。【参考方案3】:

你可以使用% debug %,它会转储很多信息,对调试这些情况很有用。

还有一个更细粒度的pprint过滤器: points.Points|pprint

【讨论】:

以上是关于Django模板:如何在页面上完整转储对象的主要内容,如果未能解决你的问题,请参考以下文章

Django如何循环对象并在模板中显示变量

如何在 Django 模板中执行此操作

如何在 OS X 上启用完整的核心转储?

Django之模板语言-----Filter

在每个 Django 页面中传递一个对象

在 Laravel 5 中,如何在启用 vue 的模板上转储变量?