25

Django 是否有任何模板标签来生成常见的 HTML 标记?例如,我知道我可以使用

{% url mapper.views.foo %}

但这只会给我 URL 而不是用于创建链接的 HTML 代码。Django 有什么类似于 Rails 的 link_to 助手的吗?我找到了django-helpers,但由于这是一件常见的事情,我认为 Django 会内置一些东西。

4

6 回答 6

26

不,它没有。

James Bennett 不久前回答了一个类似的问题,关于 Rails 的内置 JavaScript 助手。

Django不太可能内置“助手”功能。如果我理解正确,原因与 Django 保持事物松散耦合的核心理念有关。内置这种帮助器功能会导致将 Django 与特定的 JavaScript 库或(在您的情况下)html 文档类型相结合。

例如。如果/当 HTML 5 最终实现并且 Django 生成 HTML 4 或 XHTML 标记时会发生什么?

话虽如此,Django 的模板框架非常灵活,编写自己的标签/过滤器来满足您的需求并不难。我自己主要是一名设计师,我已经能够将几个自定义标签放在一起,就像一个魅力一样。

于 2008-09-15T22:22:19.897 回答
24

像这里的其他人暗示的那样,帮助程序的目的并不是帮助不知道如何编写 HTML 的开发人员。目的是封装通用功能——因此您无需编写相同的东西一千次——并提供一个单一位置来编辑整个应用程序中使用的通用 HTML。

这与模板和 SSI 有用的原因相同——不是因为人们不知道如何在页眉和页脚中编写 HTML,而是有时您只想编写一次。

例如。如果/当 HTML 5 最终实现并且 Django 生成 HTML 4 或 XHTML 标记时会发生什么?

实现 HTML 5 并且您的所有模板都用重复的 HTML 编写时会发生同样的事情,但要容易得多。

The other posts have already answered the question, linking to the docs on custom template tags; you can use tags and filters to build your own, but no, there aren't any built in.

于 2009-09-19T17:24:21.337 回答
2

看起来它们不是内置的,但这里有几个片段。看起来创建这些助手很容易:

http://www.djangosnippets.org/snippets/441/

于 2008-09-14T16:48:38.833 回答
1

这是Django 中内置的所有模板标签和过滤器的列表。Django 核心没有 Rails 那么多的 HTML 帮助器,因为 Django 贡献者假设 Web 开发人员非常了解 HTML。正如 saturdaypalace 所说,将 AJAX 助手添加到 Django 的可能性很小,因为它会导致 Django 与特定的 JavaScript 库耦合。

在 Django 中编写自己的模板标签非常容易(通常只需要定义一个函数,类似于 Rails)。您可以在一两天内重新实现 Django 中的大多数 Rails 助手。

于 2008-09-15T23:05:10.263 回答
0

我敢打赌,如果对常见的 html有任何同意,也会有 helpers 模块,只是为了完整性(或者因为其他人有它)。;)

除此之外,Django 模板系统主要是为 HTML 人制作的,他们已经知道如何编写和标记p,并且不需要任何帮助。另一方面,有 Python 开发人员,他们编写代码并不关心他们放在上下文中的变量是被包围还是被包围(关注点分离范式的完美示例)。如果您需要将这两个世界加入,您必须自己完成(或查找其他代码)。imgadivspan

于 2008-09-17T11:27:31.140 回答
-1

这不会直接回答这个问题,但为什么不在<a href="{% url mapper.views.foo %}">foo</a>模板中使用呢?

于 2008-09-16T12:10:40.763 回答