PKK*_*Kid 109 django django-templates
在我的core.html中,我有一个标记为javascript的块.如果我可以在这个块中添加更多行而不覆盖其中的所有内容,那将会很棒.
Ste*_*osh 188
{% block javascript %}
{{ block.super }}
... more content ...
{% endblock %}
Run Code Online (Sandbox Code Playgroud)
请参阅:Django文档 - 模板继承
block.super扩展模板时使用工作正常但包含模板时效果不佳,即:
{% extends "base.html" %} vs. {% include "partial.html" %}
Run Code Online (Sandbox Code Playgroud)
假设您想在页面中间包含一个模板,并且您还希望在页面末尾的块中添加一些javascript:block.super在包含的模板中调用将会崩溃.
参看 Django发布#7324,#12008,#13399以及文档的相关更新.参看 包括标签说明:
include标记应该被视为"渲染此子模板并包含HTML"的实现,而不是"解析此子模板并将其内容包含在内,就好像它是父类的一部分".这意味着包含的模板之间没有共享状态 - 每个包含都是完全独立的渲染过程.
在包含块之前对块进行评估.这意味着包含来自另一个块的块的模板将包含已经评估和呈现的块 - 而不是可以被扩展模板覆盖的块.
在那种情况下,我建议使用django-sekizai,它允许你做以下事情:
{% load sekizai_tags %}
? <p>Some content</p>
<p>Some content</p> | {% addtoblock "js" %}
| <script type="text/javascript">
{% include "partial.html" %} -> ? alert("Hello django-sekizai");
| </script>
<p>Some more content</p> ? {% endaddtoblock %}
{% render_block "js" %}
Run Code Online (Sandbox Code Playgroud)
我开始这个项目的主要原因是django和django-cms缺乏一个好的媒体(css/js)框架.是的,django中的表单中使用了Media类,但实际上并不是那么好用.通常前端人员想要决定要包含的css和javascript文件,他们不想编辑Python文件来改变我也不希望他们改变我的Python文件.因此,需要允许您编辑模板的内容,这些模板位于您现在之前或之后.我也希望删除重复项.结果我写了django-sekizai,就是这样.它类似于块,而不是继承它们,你扩展它们.
| 归档时间: |
|
| 查看次数: |
15631 次 |
| 最近记录: |