Django是否有HTML帮助器?
Django是否有任何模板标记可生成通用HTML标记?例如,我知道我可以使用
{% url mapper.views.foo %}
但这只给了我URL,却没有给我HTML代码来创建链接。 Django是否具有类似于Rails的link_to帮助器的功能?我找到了django-helpers,但是由于这是很常见的事,所以我认为Django会内置一些东西。
解决方案
回答
看起来好像它们不是内置的,但这是几个片段。创建这些助手看起来很容易:
http://www.djangosnippets.org/snippets/441/
回答
不,不是。
詹姆斯·本内特(James Bennett)不久前就Rails的内置JavaScript帮助器回答了类似的问题。
Django几乎不可能内置"辅助"功能。如果我理解正确,其原因与Django保持事物松散耦合的核心哲学有关。具有内置的此类辅助功能会导致将Django与特定的JavaScript库或者(在情况下)html文档类型结合在一起。
例如。如果/当HTML 5最终实现并且Django正在生成HTML 4或者XHTML标记时会发生什么?
话虽这么说,Django的模板框架确实非常灵活,并且编写自己想要的标签/过滤器并不困难。我本人主要是设计师,而且我已经能够将几个像吊饰一样工作的自定义标签组合在一起。
回答
这是Django内置的所有模板标签和过滤器的列表。 Django核心没有Rails那样多的HTML帮助器,因为Django贡献者认为Web开发人员非常了解HTML。如saturdaypalace所述,将AJAX帮助程序添加到Django的可能性很小,因为这会导致将Django与特定的JavaScript库耦合。
在Django中编写自己的模板标记非常容易(通常我们只需要定义一个类似于Rails的函数)。我们可以在一两天之内在Django中重新实现大多数Rails助手。
回答
这不会直接回答问题,但是为什么不在模板中使用<a href="{% url mapper.views.foo %}"> foo </a>
呢?
回答
我敢打赌,如果对通用html有任何同意,也将有helpers模块,只是为了完整性(或者因为其他人拥有它)。 ;)
除此之外,Django模板系统主要是为HTML人员开发的,他们已经知道如何编写p
,img
和a
标签,并且不需要任何帮助程序。另一方面,有Python开发人员,他们编写代码,并不关心在上下文中放置的变量是由div还是由span包围的(关注分离范式的完美示例)。如果我们需要将这两个世界结合在一起,则可以自己完成(或者寻找其他人的代码)。
回答
就像这里的其他人所暗示的那样,帮助者的目的不是帮助不知道如何编写HTML的开发人员。目的是封装通用功能-从而我们无需一千遍编写相同的内容-并提供一个位置来编辑整个应用程序中使用的通用HTML。
这是模板和SSI有用的相同原因-不是因为人们不知道如何在页眉和页脚中编写HTML,而是有时我们只想编写一次。
EG. What happens if/when HTML 5 is finally implemented and Django is generating HTML 4 or XHTML markup?
当实施HTML 5并将所有模板都用重复的HTML编写时,会发生相同的事情,除了容易得多。
其他帖子已经回答了这个问题,并链接到自定义模板标签上的文档;我们可以使用标签和过滤器来构建自己的标签,但没有,没有任何内置标签。