2017-02-14 209 views
0

有没有什么办法可以让{% %}排序的模板标签在<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>,但是按钮根本不溢出典雅,像普通的文本呢,所以我的下一行米试图避免它。

任何人都得到了一个整洁的解决方法呢?非常感激。

回答

1

从您对示例问题的描述看来,您应该实现模板过滤器,而不是模板标记。无论如何,过滤器和标签都可以工作。但是,使用量将是这样的:

<input type="submit" name="text" value="{% emoticons text %}"> 

在过滤器的情况下:

<input type="submit" name="text" value="{{text|emoticons}}"> 
+0

疑难杂症。我也想知道在采用模板过滤方法时是否会有任何性能差异。任何沉思? –

+1

从性能角度来看,我不确定在给定相同的代码实现的情况下是否存在任何差异。两者都将最终成为函数调用。从Django解析/编译模板的方式来看,我不知道是否有任何区别,但除非您有大量模板或者生成大量输出,否则您不应该担心这一点。在这种情况下,Jinja2可能更适合表现。请务必阅读自定义标签/过滤器上的文档,并避免使用XSS。 – Vasil