为什么Django模板不直接使用Python代码?

8 投票
4 回答
655 浏览
提问于 2025-04-16 08:06

我明白这些模板主要是给设计师和那些不太懂代码的人用的,但对开发者来说,这种模板语言真是麻烦。我需要重新学习如何处理一些很简单的事情,比如遍历我传入模板的字典或列表,而且它的效果似乎也不好。我还是在搞不定“点”表示法,比如在循环里用{{mydict.dictkey}}就不行 :S -- 我可能会单独问这个问题。我不明白为什么在模板系统里不能直接用Python代码。特别是我觉得如果模板是为了简单,那在这些模板中用到的Python代码应该不会比现在的模板语言复杂得多。所以那些设计师学会这些Python的基础知识应该不会比学Django模板语言更难(而且掌握基本Python后,你能做的事情会比只学DTL多得多)。而且还有一个好处就是,已经会Python的人会觉得很熟悉,能直接上手。

我是不是漏掉了什么?如果是的话,我承认我对Django不太懂,希望你能告诉我当前系统的优点。但如果不是,你有没有推荐其他的模板系统,可能更符合我的需求?

4 个回答

1

关注点分离。

设计师负责设计,开发者负责开发。模板是由设计师来写的。

设计和开发是两个独立且不同的工作领域,通常由不同的人来处理。

我想如果一个人是开发者,而他的配偶是设计师,那么在Python中使用模板代码会很合适。否则,还是让每个人专注于自己的工作,尽量少干扰对方。

2

别忘了,你并不只限于使用Django的模板语言。在你的视图函数里,你可以自由选择任何你喜欢的模板系统。只要你能生成想要返回的HTML,怎么做都可以。在Python的世界里,有很多不同的模板实现,你可以选择一个更适合你的,然后使用它。

10

很多人认为模板语言有限的原因是,他们不想把应用程序的业务逻辑和展示部分混在一起(这样做不符合MVC的理念;使用Django的话,你应该能理解这样做的好处)。

Daniel Greenfeld几天前写了一篇文章,讲述了他为什么喜欢“简单的模板语言”,很多人也对此发表了看法(可以看看最近几天在Planet Python上的讨论)。如果你读了Daniel的文章和其他人的回应,就能了解到支持和反对在模板语言中使用Python的一些观点。

撰写回答