【发布时间】:2013-06-20 08:19:31
【问题描述】:
我正在研究Django custom template tags,并收到一个关于自定义标签可能性的问题。
假设我有这样的结构
{% extends "base.html" %}
{% block leftmenu %}
{% spaceless %}
<div id="#leftmenu">
...
</div>
{% endspaceless %}
{% endblock %}
我想缩短它像
{% extends "base.html" %}
{% load myawesometags %}
{% myblock leftmenu %}
...
{% endmyblock %}
我不能只创建自定义标签添加<div> 并删除空格,因为没有{% block ... %} 内容将不会在基本模板中占据位置。那么,问题来了:是否可以在自定义模板标签中模拟标准 Django 块?
【问题讨论】:
-
有可能,虽然我认为这种模板标签不应该被定制。最简单的方法可能是(某种程度上)复制
do_block函数github.com/django/django/blob/master/django/template/… 以使用您的BlockNode并继承BlockNode类来做您想做的事情。 -
看来你是对的!我会接受这个作为答案。 :)