簡體   English   中英

Wagtail / Django塊無法從自定義/嵌套的StructBlock模板正確渲染內容

[英]Wagtail/Django block doesn't render content properly from custom/nested StructBlock template

我的基本模板的開頭有一個塊,將呈現“額外”的CSS。 該CSS將根據Wagtail CMS實例中的字段進行自定義。

因此,在base.html模板中,我有:

<head>
  {% block extra_css %}{% endblock %}
</head>
<body>
  {% block content %}{% endblock %}
</body>

然后,在擴展了基礎的我的detail.html模板中,我有:

{% block content %}
  {% for block in page.body %}
    {{ block }}
  {% endfor %}
{% endblock %}

bodyStreamField中的StreamField 所述字段之一是自定義StructBlock ,其模型設置如下:

class CalloutBlock(blocks.StructBlock):
    accent_color = blocks.CharBlock(required=False, label='Accent Color', help_text='HEX Value/Color')
    class Meta:
        template = 'inc/blocks/callout.inc.tpl'

最后,在該callout.inc.tpl模板中,我試圖呈現一個<style>標記,該標記注入到我的extra_css塊中:

{% block extra_css %}
  <style>
    .accent_color {
      background-color: {{accent_color}} !important;
    }
  </style>
{% endblock %}

但是,此塊不會像我期望的那樣注入到<head>中。 相反,它在主體中呈現,就像這樣,就好像根本沒有{% block extra_css %}標簽一樣:

<head>
</head>
<body>
  <style>
    .accent_color {
      background-color: {{accent_color}} !important;
    }
  </style>
</body>

僅僅是Django模板中的限制嗎? 是嵌套問題嗎? 還是因為我在模型級別使用自定義模板,而這超出了父模板解析的范圍?

的Django:1.10
:1.6

這是StreamField塊的自定義模板工作方式的限制。 (盡管在Django模板中也有類似的限制,但是- {% block %}機制僅與{% extends %}結合使用,而不與{% include %} 。)塊的HTML內容以獨立於模板引擎的調用,與外部頁面模板無關,因此無法在兩者之間傳遞控制權。

(請注意,Wagtail 1.6引入了{% include_block %}標記,它可以通過將變量從外部模板的上下文傳遞到塊模板來稍微改善這種情況。它仍然不允許將控制權從一個傳遞到另一個,不過。)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM