我最近一直在使用Django的模板语言,并且在大多数情况下它运行良好,但最近我遇到了一个它无法解决的小问题。
我在迭代一堆数据库对象,并在每个数据库模板中构建一个按钮。像这样:
{% for item in items %}
<button id="{{ item.action.id }}">
{{ item.action.text }}
</button>
{% endfor %}
这很好用,但我的Action
类是可继承的,并且可能有不同的按钮结构。说我想有时也附加一个javascript函数。我的第一个是嗯,让我们在我的班级中创建一个渲染方法,然后在我的模板中调用它。
class ScriptAction(Action):
def render(self):
return '''
<button id="{}" onclick={}>
{}
</button>'''.format(self.id, self.func, self.text)
因为没有模板更优雅,并且不依赖于固定的按钮结构:
{% for item in items %}
{{ item.action.render|safe }}
{% endfor %}
现在我的实际问题是:如果这个呈现的字符串需要django进一步处理怎么办?
也许render方法返回一个像
<button id="action-button-id" onclick="console.log('clicked')">
{{ item.name }}
</button>
目前,{{ item.name }}
不会在模板循环中呈现。有办法解决这个问题吗?
也许我让它变得比它应该更复杂,但我已经查看了Django内置标签和过滤器,甚至看了writing you own parser。但在这一点上,我内心的某些东西告诉我,我正在迷恋。这实际上只是一个小问题,需要相当长的时间,所以 -
如果你可以磨练其中的一些观点,我会非常感激。这个问题真让我烦恼 提前谢谢!
答案 0 :(得分:0)
我会查看用于构建自定义模板标记的simple_tag选项,并使用标记: