我有一个使用标准模板呈现一些动态内容的CMS。然而,现在我在动态内容中使用模板标签,所以我必须执行render_to_string,然后将其结果作为上下文变量传递给render_to_response。这似乎是浪费的。
怎样更好地做到这一点?
我有一个使用标准模板呈现一些动态内容的CMS。然而,现在我在动态内容中使用模板标签,所以我必须执行render_to_string,然后将其结果作为上下文变量传递给render_to_response。这似乎是浪费的。
怎样更好地做到这一点?
这似乎是浪费的。为什么会这样呢?
每个模板都是一组标记和文本的混合物。在你的情况下,某个文本块已经被模板引擎访问过了。那又怎样?一旦它被转换成纯文本,它就会非常快速地通过下一个模板引擎。
你们有具体的表现问题吗?你们没有达到交易吞吐量的要求吗?有特定的问题吗?
代码太复杂吗?维护困难吗?经常出错吗?
我认为你的解决方案是充分的。就调试而言,我不确定在动态内容中使用模板标签是否是好的,但从基本的“模板呈现”角度来看,它是可以接受的。
你正在做的听起来不错,但也可以问一个问题:为什么不直接将模板标签引用放在你的模板中,而不是手动渲染它们?
<div>
{% if object matches some criteria %}
{% render_type1_object object %}
{% else %}
{% render_type2_object object %}
{% endif %
... etc ...
</div>
或者更好的是,有一个中央模板标记用于呈现一个对象(或对象列表),其中封装了对象类型到模板标记的映射。然后,所有您的模板都只引用一个模板标记,模板本身不需要任何类型知识。
关键在于您将如何渲染单个对象的知识从您的视图中移出。