我有一个 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>
或者,更好的是,有一个用于呈现对象(或对象列表)的中央模板标签,它封装了对象类型到模板标签的映射。然后,您的所有模板都只需引用一个模板标签,模板本身不需要类型知识。
关键是您正在迁移有关如何将单个对象渲染到视图之外的知识。