块/继承/扩展的好处包括

时间:2012-05-04 03:28:56

标签: python django

所以我正在使用django构建一个应用程序。我团队中的一些人认为我应该在我的模板中使用包含而不是遵循块/扩展范例。他们认为:

  • 继承对于未来的维护者来说是太多的逻辑
  • 包含更容易理解
  • 我们不应该将未来的维护限制为“django程序员”

我真的不想对我的应用程序的模板进行屠宰,所以我试图想出一些令人信服的理由(对于非django用户),为什么继承真的是前进的方向。我很想听到更多关于此的看法。

我已经提出了几个原因:

  • 干得多。确保只需在一个地方定义样板html结构;模板失去同步的风险要小得多

  • 保留属于模板,模板和视图之外的内容;例如:

    <title>{% block title %}My Website{% endblock %}</title>

    VS

    <title>{{ pagetitle }}</title>

    这使得前端维护者可以更好地控制前端,而无需深入研究后端视图

  • 前端编码器必须熟悉从基础/覆盖默认值扩展的继承概念;考虑以下css:

    .nav {
      color: blue;
    }
    
    .nav.active {
      color: purple;
    }
    

你可以提出任何合理的理由吗?

1 个答案:

答案 0 :(得分:0)

使用继承可以更轻松(至少恕我直言)创建一个主base.html模板,并让所有其他页面extends。这样就可以在一个文件中指定所有布局/样式,其余的只是以标准化方式使用带有idclass的标记。

值得记住的是,extends(以及include)的参数可以是变量。我们的templates/base.html是一行:

{% extends base_template %}

其中base_template在我们的主上下文处理器中设置。这与改变session.base_template的简单管理小部件一起,允许我们的设计师创建多个布局,并通过单击在它们之间切换。她非常喜欢它。