客户端的 Django 模板渲染

Posted

技术标签:

【中文标题】客户端的 Django 模板渲染【英文标题】:Django template rendering on the client side 【发布时间】:2013-11-23 07:28:09 【问题描述】:

我有一个搜索结果页面的模板,一般看起来像这样:

% for result in results %
  // single result template
% endfor %

据我了解,当用户从浏览器请求此页面时,模板在服务器端呈现,然后将 html 传输给用户。在我看来,可以通过仅发送带有值的 JSON 并在客户端获取最终的 html 来减少流量。利润是由于没有为每个模板发送相同的 html-core。

这有意义吗?这种优化有什么通用的解决方案吗?非常感谢。

【问题讨论】:

【参考方案1】:

是的,有,但不是作为 Django 的一部分。 Ember.js 和 AngularJs 等框架在 Javacript 中执行此操作。这两者都是运行客户端的完整模型视图控制器框架。最终,服务器端可以简单地简化为一个将 json 传输到客户端的 REST 接口。

这是一个极端的例子,我相信 Ember.js 可以很容易地与您网站的一小部分集成,这可能是您希望与 django 一起使用的部分。

如果 django 使用缓存中间件,那么对于大多数站点来说,它的效率应该不会太低,因为缓存只会在数据更改时更新,尽管生成动态搜索结果是一个很好的例子。

django 模板系统非常高效。与大多数 Web 框架一样,在大多数情况下,在服务器上执行搜索时,服务请求所花费的大部分时间将用于查询数据库,尤其是在使用纯文本搜索时。因此,以模板渲染的形式优化服务请求的最后一步,在大多数情况下可能不值得优化。

话虽如此,许多网站确实在客户端执行渲染,并且它目前是框架开发的一个活跃领域。

【讨论】:

以上是关于客户端的 Django 模板渲染的主要内容,如果未能解决你的问题,请参考以下文章

Django之Form组件

Django 渲染模板路径配置变量使用。

26模板引擎thymeleaf

26模板引擎thymeleaf

07-Django模板

Django的请求生命周期