我打算把我目前的进展放在这里,尽管这还没有解决(但我希望我越来越近)。我曾尝试以下解决这个:
我templatetags
这已经(文件templatetags/debug.py
):
from django.template import Library, Node
register = Library()
class PdbNode(Node):
def render(self, context):
import pdb as pdb_module
pdb_module.set_trace()
return ''
class IPdbNode(Node):
def render(self, context):
import ipdb as ipdb_module
ipdb_module.set_trace()
return ''
class EmbedIPythonNode(Node):
def render(self, context):
from IPython import embed
embed()
return ''
@register.tag
def pdb(parser, token):
return PdbNode()
@register.tag
def ipdb(parser, token):
return IPdbNode()
@register.tag
def ipython(parser, token):
return EmbedIPythonNode()
而且你可以用它在模板中,如:
{% load debug %}
{% ipython %}
{% pdb %}
{% ipdb %}
<row>
<div class="col-lg-6""></div>
<div class="col-lg-6"">
<div class="slider {{field.extra_class}}" data-prefix="{{field.prefix}}" data-postfix="{{field.postfix}}" data-min="{{widget.min}}" data-max="{{widget.max}}" data-value="{{field.value}}"></div>
</div>
</row>
(您需要pip install
ipython
和ipdb
)
这是一个示例会话:
In [15]: dir(context.dicts[5]['field'])
Out[15]:
['__class__',
'__delattr__',
'__dict__',
'__doc__',
'__format__',
'__getattribute__',
'__getitem__',
'__hash__',
'__html__',
'__init__',
'__iter__',
'__len__',
'__module__',
'__new__',
'__reduce__',
'__reduce_ex__',
'__repr__',
'__setattr__',
'__sizeof__',
'__str__',
'__subclasshook__',
'__unicode__',
'__weakref__',
'_initial_value',
'as_hidden',
'as_text',
'as_textarea',
'as_widget',
'auto_id',
'css_classes',
'data',
'errors',
'field',
'form',
'help_text',
'html_initial_id',
'html_initial_name',
'html_name',
'id_for_label',
'is_hidden',
'label',
'label_tag',
'name',
'value']
而且由于采用ipython
壳,我能找到的最高值是{{field.field.max_value}}
。不知道为什么需要双字段说明符,但它的工作原理。
谢谢,但那不适合我。这些值在我的模板中为空,除了{{field.value}},它具有正确的值。我如何访问上下文以自己查看可用的值/对象?我想看看上下文中的'field'对象。你有什么窍门吗?我安装了django-debug-toolbar,但我无法在上下文中看到“field”对象。渲染特定模板(一种模板断点)时可以放入iPython shell吗? – dangonfast
在模板的顶部放置['{%debug%}'](https://docs.djangoproject.com/en/1.8/ref/templates/builtins/#debug) - 这会将上下文转储到检查。 – solarissmoke
我已经这样做了,并且还使用了django-debug-toolbar,并通过脆皮形式的实现进行浏览,并使用templatetag在模板(pdb和ipdb)中启动调试器,并浏览django.template.context .RequestContex实现,...但我根本找不到如何列出字段上下文对象的所有可用属性。 'max_value'和'min_value'绝对不可用,但'value'是。你怎么知道应该为模板提供什么对象/属性? – dangonfast