我有一個CMS需要一些動態內容並使用標準模板呈現它。不過,我現在在動態內容中使用模板標籤,因此我必須先執行render_to_string,然後將結果作爲上下文變量傳遞給render_to_response。這看起來很浪費。模板內的模板。如何避免渲染兩次?
什麼是更好的方法來做到這一點?
我有一個CMS需要一些動態內容並使用標準模板呈現它。不過,我現在在動態內容中使用模板標籤,因此我必須先執行render_to_string,然後將結果作爲上下文變量傳遞給render_to_response。這看起來很浪費。模板內的模板。如何避免渲染兩次?
什麼是更好的方法來做到這一點?
「這看起來很浪費」爲什麼看起來這樣?
每個模板都是標籤和文本的混合。在你的情況下,一些文本塊已經被模板引擎訪問過。所以呢?一旦它被轉換,它就是文本,並且非常非常快地通過下一個模板引擎。
您是否有特定的性能問題?你不符合你的交易吞吐量要求嗎?有沒有特定的問題?
代碼是否太複雜?難以維護嗎?它總是打破嗎?
我認爲你的解決方案已經足夠。從調試的角度來看,我不確定動態內容中的模板標籤是否合適,但從基本的「模板呈現」角度來看,它沒有問題。
好點。也許這是一個'過早優化'的例子... – 2009-01-22 11:31:24
你在做什麼聽起來不錯,但問題可以問:爲什麼不把模板標籤直接放在你的模板中而不是手動渲染它們?
<div>
{% if object matches some criteria %}
{% render_type1_object object %}
{% else %}
{% render_type2_object object %}
{% endif %
... etc ...
</div>
或者,更好的是,具有用於渲染的對象(或多個對象的列表),它封裝了對象類型的到templatetags映射一箇中央templatetag。然後,所有的模板只需引用一個模板標籤,而模板本身不需要任何類型知識。
關鍵在於您正在移動有關如何將單個對象呈現在視圖外的知識。
那麼,不要把模板標籤放在動態內容 – nosklo 2009-01-22 13:35:50