【发布时间】:2011-12-07 04:34:27
【问题描述】:
我已经走到这一步了:
>>> some_template = get_template_from_string(
... load_template_source(
... 'some_template.html',
... settings.TEMPLATE_DIRS))
...
>>> blocks = some_template.nodelist.get_nodes_by_type(BlockNode)
>>> blocks[0]
<Block Node: another_block. Contents: [<Text Node: '\nThis one is really cool'>, <Block Node: sub_block. Contents: [<Text Node: '\nI\'m a sub-block.\n\t'>]>, <Text Node: '\n'>]>
>>> # Right there is when I realized this wasn't going to be fun.
您看,块的内容包含在block.nodelist 中,而不仅仅是纯文本。如果我有模板:
{% extends "base.html" %}
{% block some_block %}
Some value
{% endblock %}
{% block other_block %}
Other Value
{% sub_block %}Sub block value{% endblock %}
{% endblock %}
我希望能够做到这一点:
>>> get_block_source('other_block')
'\nOther Value\n {% sub_block %}Sub block value{% endblock %}\n'
>>> get_block_source('sub_block')
'Sub block value'
如果 Django 的内部没有提供足够的资源来找到一种方法来做到这一点,我也可以使用正则表达式/一系列正则表达式,但我看不出单独使用正则表达式是如何实现的,假设您可以嵌套{% block... 标签。
【问题讨论】:
-
我们这样做是因为通常有更好的方法。许多开发人员决定了一个解决方案,然后半途而废,陷入困境,然后只是问如何解决他们面前的问题,而不是问如何解决最初的问题。
-
@orokusaki:啊,你可能误解了他(或者没有,很难说)。请注意,如果您从字面上阅读他的问题,他只是在向您询问有关更大问题的更多信息:“您为什么要这样做?”但在文化上,我们习惯于将这个问题简单地解释为“你错了”。这是使用这类在线论坛的一大挑战。
标签: python regex django django-templates