【问题标题】:Django is rendering template from the database efficientDjango 正在高效地从数据库中渲染模板
【发布时间】:2021-05-21 17:04:53
【问题描述】:

这不是一个 HOWTO 问题,因为它在 here 之前已经回答过

我正在尝试将 Django 与现代前端框架集成,我发现可以从模型中存储和呈现 Django 模板。由于它不是标准,我想知道基于文件的模板有哪些优点(或缺点)。

通过阅读文档,我看到建议尽可能多地实际缓存模板和模型以获得最佳性能,那么为什么不建议将模板存储在数据库中呢?这样做对我来说似乎非常方便,可以从管理面板(您可以在其中添加代码编辑器)编辑页面,这与其余框架和前端框架协同工作非常好。

根据我的研究,模板标签和模板语言似乎可以工作,并且上下文也可以在视图中传递。我唯一想不通的是 {include .. } 标签,因为它似乎没有指向视图。 (虽然自定义标签可以有这个功能)

这样的设置可以在生产中使用吗?还是有安全/性能/其他问题?

【问题讨论】:

  • 这听起来就像你在谈论一个CMS,从前端编辑网页模板。 Django当然不是CMS,也不是这样的:它是一个较低的层,因此Django中不存在此功能是故意的:限制功能(避免它成为一个包罗万象的东西-单调性)。
  • 不是真的,但在这方面 django 在前端的东西有点糟糕,所以你必须将它外包给一个 js 框架。在此设置中,一切都是静态的,如果您想在生产中更改某些颜色或字体,这将非常不方便。无论如何,你和你正在建立一个服装 CMS

标签: python django


【解决方案1】:

不建议这样做,因为模板是开发人员的责任,而不是网站管理员的责任。

否则,直接从文件系统读取文件和从数据库读取文件的性能差别不大。

这种方法的一个缺点是您不会获得修订历史记录(使用 git、mercurial 等)。当然,您可以实现类似的东西来将修订保存在数据库中,但是为什么不使用已经存在的更好的工具呢?

有一个 Django flatpages 应用程序可以让您将 HTML 内容保存在数据库中。但该应用程序的目的是允许网站管理员编辑 HTML 内容,例如“关于我们”页面的信息,因为编写此信息不是开发人员的责任。

【讨论】:

    猜你喜欢
    • 2021-08-10
    • 2015-06-04
    • 2021-12-11
    • 2022-07-22
    • 2016-02-21
    • 2013-02-15
    • 2018-05-20
    • 2018-11-05
    相关资源
    最近更新 更多