Django是否有任何模板标签来生成常见的HTML标记?例如,我知道我可以使用
获取网址{% url mapper.views.foo %}
但这只会给我一个URL而不是HTML代码来创建链接。 Django有没有类似于Rails的link_to帮助器?我发现django-helpers但是因为这是一个常见的事情,我认为Django会内置一些东西。
答案 0 :(得分:26)
不,不。
关于Rails的内置JavaScript助手,James Bennett回答了similar question一段时间。
真的 不太可能Django内置'helper'功能。如果我理解正确,原因与Django保持事物loosely coupled的核心理念有关。内置了这种辅助功能可以将Django与特定的JavaScript库或(在您的情况下)html文档类型相结合。
EG。如果/最终实现HTML 5并且Django正在生成HTML 4或XHTML标记,会发生什么?
话虽如此,Django的模板框架非常灵活,write your own tags/filters做出你想做的事情并不是非常困难。我自己大部分都是一名设计师,而且我已经能够将几个自定义标签放在一起,就像一个魅力。
答案 1 :(得分:21)
正如其他人所暗示的那样,帮助者的目的不是帮助那些不知道如何编写HTML的开发人员。目的是封装常用功能 - 因此您不需要编写相同的内容一千次 - 并提供一个位置来编辑整个应用程序中使用的常用HTML。
这与模板和SSI有用的原因相同 - 不是因为人们不知道如何在页眉和页脚中编写HTML,但有时你只想写一次。
EG。如果/当HTML 5是什么时会发生什么 终于实现了,Django就是 生成HTML 4或XHTML标记?
实现HTML 5时会发生同样的事情,并且所有模板都是用重复的HTML编写的,除了更容易之外。
其他帖子已经回答了问题,链接到custom template tags上的文档;您可以使用标签和过滤器来构建自己的标签和过滤器,但不,没有内置的。
答案 2 :(得分:2)
它看起来不像是内置的,但这里有几个片段。看起来创建这些助手很容易:
答案 3 :(得分:1)
这是list of all template tags and filters built into Django。 Django核心没有像Rails那样多的HTML帮助程序,因为Django贡献者认为Web开发人员非常了解HTML。正如saturdaypalace所说,将AJAX助手添加到Django是不太可能的,因为它会导致Django与特定的JavaScript库耦合。
在Django中write your own template tags很容易(通常你只需定义一个与Rails类似的函数)。您可以在一两天内重新实现Django中的大多数Rails助手。
答案 4 :(得分:0)
我敢打赌,如果对常见的html 有任何同意,那么也会有帮助模块,只是为了完整性(或者因为其他人拥有它)。 ;)
除此之外,Django模板系统主要面向HTML人员,他们已经知道如何编写p
,img
和a
标签,并且不需要任何帮助器为此。另一方面是Python开发人员,他们编写代码而不关心他们放在上下文中的变量是否被div
或span
包围(关注点分离的完美示例范例)。如果你需要加入这两个世界,你可以自己做(或寻找其他代码)。
答案 5 :(得分:-1)
这不会直接回答问题,但为什么不在模板中使用<a href="{% url mapper.views.foo %}">foo</a>
?