Django 有模板标签来生成常见的 HTML 标记吗?例如,我知道我可以使用以下方式获取网址

{% url mapper.views.foo %}

但这只给了我 URL,而不是创建链接的 HTML 代码。Django 有类似 Rails 的 link_to 帮助器的东西吗?我发现 Django 助手 但由于这是很常见的事情,我认为 Django 应该有一些内置的东西。

有帮助吗?

解决方案

不,没有。

詹姆斯·贝内特 回答了一个 类似的问题 不久前,关于 Rails 的内置 JavaScript 帮助器。

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

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

话虽如此,Django 的模板框架确实非常灵活,并且不会很难 编写您自己的标签/过滤器 这就是你想要的。我自己主要是一名设计师,我已经能够将几个自定义标签组合在一起,效果非常好。

其他提示

正如其他人所暗示的那样,助手的目的并不是帮助不知道如何编写 HTML 的开发人员。目的是封装通用功能——这样您就不需要将相同的内容编写一千遍——并提供一个位置来编辑整个应用程序中使用的通用 HTML。

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

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

当实现 HTML 5 并且所有模板都用重复的 HTML 编写时,也会发生同样的情况,只是要容易得多。

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

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

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

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

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

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

除此之外,Django 模板系统主要是为 HTML 人员制作的,他们已经知道如何编写 p, imga 标签并且不需要任何 帮手 为了那个原因。另一方面,有 Python 开发人员,他们编写代码,并不关心他们放入上下文中的变量是否包含在 div 或通过 span (完美的例子 关注点分离 范例)。如果您需要将这两个世界连接起来,您必须自己完成(或寻找其他人的代码)。

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top