Jinja:使用 {% url %} 标签或明确定义 url 是更好的做法吗?

Jinja: Is it a better practice to use the {% url %} tag or explicitly define the url?

假设您在 Django 中有一个论坛应用程序,其命名空间为 forums,主页的名称为 home,您想要创建一个 <a> 标签 link 到那个页面。 <a href="{% url 'forums:home' %}"></a> 是更好的做法还是 <a href="/forums"></a> 更好?或者这无关紧要?

{% url %} 标签的存在是为了使用 - 它不是无用的。

如果您移动视图,手动修复所有模板代码以指向新视图是很痛苦的。

  • {% url %} 标签将始终指向规范 url。在您的示例中,当遵循常见的 Django 约定时,第二种形式将导致不必要的从 /forums 重定向到 /forums/

  • {% url %} 标签是一个快速失败系统。如果在创建 url 时 url 不存在,Django 将引发错误 - 而不是当用户单击 link 并获得 404 时。这有助于开发无错误的应用程序.

  • 如 Mikko 所说,它允许您更改视图的 url 而无需更改每个模板。