【问题标题】:Why does Django template block/include include external <table> tag?为什么 Django 模板块/包含包含外部 <table> 标记?
【发布时间】:2020-12-12 09:38:09
【问题描述】:

考虑下面的代码:

<table id='table1'>
  {% if model_name == 'TransactionsTable' %}        
    {% block transactions_create %}            
      {% include "snippets/transactions_create_and_update.html" with form=form %}            
    {% endblock transactions_create %}                 
  {% endif %}
</table>

我在transactions_create_and_update.html 中有另一个&lt;table&gt;,“table2”。

<table  id=table2>abc</table>

Table2 出现在其父元素之外。见下图 - table2 应该在 table1 内

所以经过一些测试后,我尝试提前关闭 table1(第一行):

<table id='table1'></table>
  {% if model_name == 'TransactionsTable' %}        
    {% block transactions_create %}            
      {% include "snippets/transactions_create_and_update.html" with form=form %}            
    {% endblock transactions_create %}                 
  {% endif %}

然后就是这个样子

我真的不明白这两种情况发生了什么。

From the docs - 认为这是答案的一部分,但我不知道该怎么办:

include 标签应该被认为是“render 这个子模板并包含 HTML”,而不是“解析这个子模板” 并包含其内容,就好像它是父级的一部分一样”。这意味着 包含的模板之间没有共享状态——每个 include 是一个完全独立的渲染进程。

块在被包含之前被评估。这意味着一个 包含来自另一个块的模板将包含以下块 已经被评估和渲染 - 不是可以被 例如,被扩展模板覆盖。

【问题讨论】:

  • HTML问题,table标签的children应该是th或者tr等,不直接包含纯文本

标签: python html django django-templates


【解决方案1】:

我有太多的“包含”。事实证明,在更深一层我有一个没有正确关闭的元素。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-26
    • 2011-04-28
    相关资源
    最近更新 更多