Jinja2模板组件?块?模板?

时间:2017-07-15 00:00:23

标签: django jinja2

jinja2 模板的一个小问题: 我想创建一个可重用的模板来包含然后覆盖块。宏不容易让我像参数那样编写HTML的垃圾吗?假设我想重复使用include几次,并且在我想要动态分配的块中使用大量的HTML 我该怎么做?

当然不是我想的宏,或者我错了?

{% render_foo('bar',2) %}很好

{% render_foo('<table><tr><th>something</th><th>somethingelse</th></tr><tbody><tr>....etc') %}不再适用

&#34;你真正想做什么?&#34;

是的,我告诉过你,我有办法为我的数据创建容器。容器总是一样的。每次使用时内容完全不同。曾经一张桌子。一旦成为bootstrap组件。一旦表格。

周围的元素总是相同的

重现简单的错误,这就是我所做的:

 {% include 'full_section.html' %}
  {% block fullsection %} <table><tr><th>something</th><th>somethingelse</th></tr><tbody><tr>....etc{% endblock %}

  {% include 'full_section.html' %}
  {% block fullsection %} <form>//some cool LONG big form </form>{% endblock %}

full_section.html内容仅仅是为了完整性,它在现实中要复杂得多

<div class="my_cool_full_section">
{% block full_section %}{% endblock %}
</div>
  

TemplateAssertionError:block&#39; fullsection&#39;定义了两次

1 个答案:

答案 0 :(得分:4)

我在jinja2 docs中找到了隐藏的答案

http://jinja.pocoo.org/docs/2.9/templates/#block-assignments

所以你使用宏和块分配,例如像这样:

Private Sub Worksheet_Change(ByVal Target As Range)

Dim R, V
Dim x As Range
Dim counter As Long
counter = 1

If Target.Address = ("$K$7") Then
    V = [K7].Value
    Set x = Range("R3:GJU3")

    For Each R In Range("R3:GJU3")
        If IsError(R.Value) Then
            R.EntireColumn.Hidden = True
        Else
            R.EntireColumn.Hidden = R.Value <> V
        End If
        DoEvents
        Application.StatusBar = Format(counter / x.Columns.Count, "Percent")
        counter = counter + 1
    Next R
End If

End Sub

想知道他们在2.8之前做了什么......黑暗的黑暗中年

然后在宏中:

{% set section_content %}
<table><tr><td>etc</td> <td>etc</td> <td>etc</td></tr></table>
<table><tr><td>etc</td> <td>etc</td> <td>etc</td></tr></table>
<table><tr><td>etc</td> <td>etc</td> <td>etc</td></tr></table>
  {% endset %}
  {{  render_full_size_section(section_content)  }}


  {% set section_content %}
  aaaaaaaaaaa
    {% endset %}
    {{  render_full_size_section(section_content)  }}