gpt4 book ai didi

python - 在 django 模板中渲染返回的字符串

转载 作者:行者123 更新时间:2023-12-01 09:29:42 25 4
gpt4 key购买 nike

最近我经常使用 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 。但此时我内心的某种感觉告诉我,我太着迷了。这实际上只是一个小问题,并且需要相当长的时间,所以 -

  • 这样的努力是否值得?
  • 编写这样的复杂解析器安全吗?
  • Django 模板语言能做这样的事情吗?

如果您能够磨练其中的一些要点,我将非常感激。这个问题真是困扰我。
提前致谢!

最佳答案

我会调查 simple_tag用于构建自定义模板标签的选项,并具有标签:

  1. 将模型实例作为其参数(加上上下文!)
  2. 向模型实例询问用于渲染的模板代码片段
  3. 使用the raw template API渲染该模板片段
  4. 返回结果,如果您知道结果是安全的,则可以选择标记为安全。

关于python - 在 django 模板中渲染返回的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50075393/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com