2017-02-14 231 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