为什么django模板只使用python代码?

min*_*ief 7 python django django-templates

我的意思是我理解这些模板是针对设计师和其他不那么精通代码的人,但对于开发人员,我觉得模板语言只是一个麻烦.我需要重新学习如何做非常简单的事情,比如迭代我传递给模板的字典或列表,它甚至看起来效果都不好.我仍然无法像我期望的那样使整个"点"符号工作(例如,for {循环中的{{mydict.dictkey}}不起作用:S - 我可能会将此作为一个单独的问题) ,我不明白为什么在模板系统中只使用python代码是不可能的.特别是,我觉得如果模板很简单,那么需要在这些模板中使用的python代码的级别将比当前的模板语言更复杂.所以这些设计师偷看学习那么多python会比学习Django模板语言更麻烦(并且你可以使用基本python而不是DTL的知识更多的地方)并且附加的优势将是那些人已经知道python将处于熟悉的领域,具有他们可用的所有常用语法和功能,并且可以开始.

我错过了什么吗?如果是这样的话,我请求django noob,并希望你能够启发我当前系统的许多优点.但是否则,对其他模板系统的任何建议可能更像我正在寻找的?

Raf*_*ler 10

大多数人为有限的模板语言提供的原因是他们不希望将他们的应用程序的业务逻辑与其表示混合(这与MVC哲学不兼容;使用Django我确信你理解它的好处这个的).

丹尼尔格林菲尔德几天前了一篇文章,解释了为什么他喜欢"愚蠢的模板语言",很多人写了回复(参见过去几天关于Planet Python的文章).如果您阅读了Daniel写的内容以及其他人如何回应它,您将会了解允许模板语言使用Python的一些论据.

  • 分离+1 - 这是真正的原因,如果你没有比你的主要语言更强大的模板系统,那么你的业务规则很难将你的业务规则放在你的HTML中......而我对MVC并不太热爱具体而言,逻辑与表示的分离是理智代码的先决条件 (3认同)
  • @mindthief:可能(根据我对这个问题的回答),但不是内置的.这阻碍了进入模板的任何"太复杂",迫使逻辑和表示更好地分离.由你来决定你是否更喜欢更强大的功能(以更高的复杂性为代价提供更大的灵活性,而不是在自己的脚下射击自己的责任)(或者提供强制性的逻辑和内容分离). (3认同)