Django是否有HTML帮助器?

时间:2020-03-05 18:53:02  来源:igfitidea点击:

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人员开发的,他们已经知道如何编写pimga标签,并且不需要任何帮助程序。另一方面,有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编写时,会发生相同的事情,除了容易得多。

其他帖子已经回答了这个问题,并链接到自定义模板标签上的文档;我们可以使用标签和过滤器来构建自己的标签,但没有,没有任何内置标签。