HTML输入标签(值属性)中的Django模板标签
问题描述:
有没有什么办法可以让{% %}
排序的模板标签在<input type="submit">
HTML标签中工作?HTML输入标签(值属性)中的Django模板标签
例如,假设变量text
包含You're cool :-)
,我有一个自定义模板标签,轮流:-)
到相应的自定义的表情符号,我设计的。
然后,以下是行不通的,会是:<input type="submit" name="text" value="{% emoticons %}{{ text }}{% endemoticons %}">
我明白,我也可以用<button type="submit" name="text">{% emoticons %}{{ text }}{% endemoticons %}</button>
,但是按钮根本不溢出典雅,像普通的文本呢,所以我的下一行米试图避免它。
任何人都得到了一个整洁的解决方法呢?非常感激。
答
从您对示例问题的描述看来,您应该实现模板过滤器,而不是模板标记。无论如何,过滤器和标签都可以工作。但是,使用量将是这样的:
<input type="submit" name="text" value="{% emoticons text %}">
在过滤器的情况下:
<input type="submit" name="text" value="{{text|emoticons}}">
疑难杂症。我也想知道在采用模板过滤方法时是否会有任何性能差异。任何沉思? –
从性能角度来看,我不确定在给定相同的代码实现的情况下是否存在任何差异。两者都将最终成为函数调用。从Django解析/编译模板的方式来看,我不知道是否有任何区别,但除非您有大量模板或者生成大量输出,否则您不应该担心这一点。在这种情况下,Jinja2可能更适合表现。请务必阅读自定义标签/过滤器上的文档,并避免使用XSS。 – Vasil