哪个Django模板布局更好?

时间:2014-04-21 14:21:17

标签: python django django-templates

哪种布局更好(Django 1.4 +),:

project/templates/base.html
# project/templates/app/base.html # overriding some_app at project level, optional
project/app/templates/app/base_app.html
project/app/templates/app/base_app_index.html
  • base_app_index.html扩展base_app.html - app level
  • base_app.html扩展base.html - 项目级别。
像这样的

usable(一个项目的应用程序之间没有共享)

project/app/templates/app/base_app.html
project/app/templates/app/base_app_index.html
  • 只需base_app_index.html扩展base_app.html

参考文献:

来自Django Docs

  • 创建一个base.html模板,其中包含您网站的主要外观。
  • 为您网站的每个“部分”创建一个base_SECTIONNAME.html模板。例如,base_news.html,base_sports.html。这些模板都扩展了base.html,并包含特定于部分的样式/设计。
  • 为每种类型的页面创建单独的模板,例如新闻文章或博客条目。这些模板扩展了相应的部分模板。

来自Django Best Pratices

  

位置模板通常位于两个位置之一,位于   应用程序或项目的根级别。我们建议保留   除非您计划,否则项目模板目录中的所有模板   将您的应用程序包含在多个项目中(或开发它)   作为开源“可重用”应用程序)。在那种情况下,它可以   有助于在应用程序中提供一组示例模板,   允许它开箱即用或作为其他人的榜样   开发者。

来自Two Scoops of Django

  • 每个应用都有一个base_.html模板。应用级基本模板共享一个公共父级base.html。
  • 应用内的模板共享一个共同的父base_.html模板。
  • 与base.html处于同一级别的任何模板都会继承base.html

1 个答案:

答案 0 :(得分:3)

这可能取决于您的目的。对于大多数目的,第一个示例将最有效。您的base.html将包含很多特定于网站的内容,而您希望在每个base_app.html模板中重复这些内容。

如果您要创建要与其他人共享的可重用应用程序,那么最好使用第二个示例。这样,使用您的应用的用户就不需要base.html模板来启动和运行您的应用。它更具有包容性"。

这基本上就是那些文档所说的。一般的建议是使用第一种方法,除非你开源并将它放在PyPi或其它东西上。

即使你想让一个包可以重复使用(即在你正在进行的多个项目中使用),我也会选择第一种方法。您可以这样做,以便在模板目录中始终有base.html