提问人:nigel239 提问时间:11/15/2023 最后编辑:nigel239 更新时间:11/15/2023 访问量:47
Django base.html 块覆盖
Django base.html block overwriting
问:
我想定义并附加到 base.html 模板中定义的块。
假设我有以下模板
<!DOCTYPE html>
<html>
<head>
<title>My Project</title>
{% block append_to_me %}{% endblock %}
</head>
<body>
{% block content %}{% endblock content %}
</body>
</html>
然后,我将使用以下模板作为我的视图, 我的视图呈现了一些 Wagtail 组件,这些组件可能会 想要使用 append_to_me 块。
这不仅适用于 wagtail 块,也适用于普通的 django 模板标签
{% extends "base.html" %}
{% block content %}
<h2>Content for My App</h2>
<p>Stuff etc etc.</p>
{# I want it to not matter where I use this. #}
{% my_custom_tag %}
{% endblock content %}
哪里会做这样的事情:{% my_custom_tag %}
@register.simple_tag(takes_context=True)
def my_custom_tag(context):
objects = Preload.objects.all()
for object in objects:
append_to_header_block(object.html)
Wagtail 块示例:
class MyBlock(blocks.StructBlock):
title = blocks.CharBlock()
content = blocks.RichTextBlock()
class Meta:
template = 'myapp/myblock.html'
myapp/myblock.html
{% add_to_header IMG "img/my-img.jpeg" %}
...
我还希望能够保留以前调用函数的内容,
以免覆盖之前的内容。add_to_header
我只是无法弄清楚我将如何实现这一点,因为有几个问题:
- 评估顺序,我很确定 base.html 的内容会在任何其他模板之前呈现。
- 也许这可以通过以某种方式从任何地方覆盖块来解决;每次都打电话?不知何故,这将是我的问题。
append_to_me
block.super
- 也许这可以通过以某种方式从任何地方覆盖块来解决;每次都打电话?不知何故,这将是我的问题。
- Wagtail 块甚至可能不知道它们没有在 base.html 中使用,因为它们的多功能性。
关于我将如何实现这一点的任何想法? 我什至不确定这是否可能,但我很想听听你对此的看法。
答: 暂无答案
评论
append_to_me
{% block append_to_me %}{{ block.super }}{% my_custom_tag %}{% endblock %}
extends base.html
append_to_me