Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么不';django模板是否只使用python代码?_Python_Django_Django Templates - Fatal编程技术网

为什么不';django模板是否只使用python代码?

为什么不';django模板是否只使用python代码?,python,django,django-templates,Python,Django,Django Templates,我的意思是,我知道这些模板是针对设计师和其他不太懂代码的人的,但对于开发人员来说,我觉得模板语言只是一个麻烦。我需要重新学习如何做一些非常简单的事情,比如遍历我传递到模板中的字典或列表,但它似乎工作得不太好。我仍然很难让整个“点”符号按照我的预期工作(例如,for循环中的{{mydict.dictkey}}不起作用:S——我可能会单独问这个问题),我不明白为什么不能在模板系统中使用python代码。特别是,我觉得如果模板是简单的,那么这些模板中需要使用的python代码级别将不会比当前的模板语言

我的意思是,我知道这些模板是针对设计师和其他不太懂代码的人的,但对于开发人员来说,我觉得模板语言只是一个麻烦。我需要重新学习如何做一些非常简单的事情,比如遍历我传递到模板中的字典或列表,但它似乎工作得不太好。我仍然很难让整个“点”符号按照我的预期工作(例如,for循环中的{{mydict.dictkey}}不起作用:S——我可能会单独问这个问题),我不明白为什么不能在模板系统中使用python代码。特别是,我觉得如果模板是简单的,那么这些模板中需要使用的python代码级别将不会比当前的模板语言复杂。因此,与学习Django模板语言相比,这些设计师peep在学习这么多python方面不会有更多的困难(而且,与DTL相比,掌握基本python的知识可以有更多的地方)另外一个好处是,已经了解python的人将熟悉所有常用的语法和可用的功能,并且可以开始工作


我错过什么了吗?如果是这样的话,我恳求django noob,并希望你能就当前体系的诸多优点给我一些启发。但除此之外,关于其他模板系统的任何建议可能更符合我的要求吗?

大多数人对有限的模板语言给出的理由是,他们不想将应用程序的业务逻辑与其表示形式混为一谈(这不符合MVC的理念;使用Django我相信您理解这一点的好处)


Daniel Greenfeld写道,许多人也写了回复(见过去几天)。如果您阅读Daniel所写的内容以及其他人对此的反应,您将了解支持和反对允许模板语言使用Python的一些论据。

不要忘记,您并不局限于Django的模板语言。您可以在视图函数中自由地使用任何您喜欢的模板系统。无论您想创建什么从视图函数返回的HTML很好。Python世界中有许多模板实现:选择一个更适合您的,并使用它。

关注点分离。

设计师进行设计。开发人员进行开发。模板由设计师编写

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


我想如果一个人是开发人员,而他们的配偶是设计师,用python编写模板代码会很好。否则,让每个人都尽可能少地完成自己的工作。Django模板使用python代码的原因与Django使用MVC范例的原因不同:
没有特别的原因。
(也就是说,任何人使用MVC的原因都是一样的,只是有些人喜欢这种僵化的哲学模式。)


总的来说,如果你不喜欢这样的事情,我建议你避免Django,因为Django人不会改变这种方法。但是,你也可以做一些愚蠢的事情(因为这与所选软件的理念相矛盾),比如把所有的标记和你能做的任何事情放到“视图”中文件,将Django从其“MVC”(或“MTV”)范式转变为大致与其他事物相同的模式(一个乏味但简单的整体).

+1分离-这是真正的原因,如果你没有一个比你的主语言功能更弱的模板系统,那么把你的业务规则放在你的HTML中太诱人了…虽然我不太喜欢MVC,但逻辑和表示的分离是健全的codehmm的先决条件,这有意义吗It’这意味着我试图在模板中做的事情实际上可能不可能实现?我在@mindstepher:mable(根据我对该问题的回答)中描述了这个问题,但不是内置的。这阻止了任何“过于复杂”的事情从进入模板,强制更好地分离逻辑和表示。这取决于您是否喜欢更强大的功能(这提供了更大的灵活性,但代价是增加了复杂性和不伤自己的责任)或不喜欢(这提供了逻辑和内容的强制分离).很有意义,谢谢你的回答。我发现确实有很强的理由支持这种分离。但我还不确定哪条路最适合我——我认识的某个人编写了他自己的模板语言,非常灵活,但正如你所描述的那样,他无视MVC。他似乎自己做得不错。我尊重遵循best实践,所以我将给DTL(和MVC)一个真诚的机会!:)简短的回答:对于框架作者设想的web/模板设计师来说,他们不一定具有编程背景,他们很可能会并行地一起工作,随着web应用程序程序员在制作整个网站。似乎有这样一个模板系统的地方。我看到这里的每个人都用“设计师是邪恶的”、“层分离”来解释这一点,而实际上这是一种限制,并且为与模板定义和构建相关的各方添加了另一种“令人困惑的”标记。实际上,限制这种与组织规则的分离,让模板成为从核心模板继承的常规类更有用,在核心模板中可以使用标记和python代码。是的,我不完全相信(正如我在Rafe的回答中的评论所指出的),但我会保留我的判断,直到我对这些事情有更多的经验:)。谢谢是的,也许如果我是一名设计师,点符号会比学习初级python更不可怕(因此可能在推广方面更成功)。谢谢