姜戈"load url from future"是什么



当我有时阅读 django 代码时,我在某些模板中看到"从未来加载 url"。我不太确定这是什么,但我知道它与 URL 有关。应该如何以及何时使用来自未来的加载 url?

这是

由于 1.3 中对 url 标签的更改:

urlssi的更改

大多数模板标签都允许您将常量或变量作为参数传入 - 例如:

{% extends "base.html" %}

允许您将基本模板指定为常量,但如果具有包含值的上下文变量templ base.html

{% extends templ %}

也是合法的。

但是,由于历史的偶然性,urlssi是不同的。这些标记使用第二个无引号语法,但将参数解释为常量。这意味着无法使用上下文变量作为urlssi标记的目标。

Django 1.3 标志着纠正这一历史事故的过程的开始。Django 1.3 添加了一个新的模板库 – future – 它提供了 urlssi 模板标签的替代实现。此future库实现行为,使第一个参数的处理与所有其他变量的处理一致。因此,包含以下内容的现有模板

{% url sample %}

应替换为:

{% load url from future %}
{% url 'sample' %}

实现旧行为的标签已被弃用,在 Django 1.5 中,旧行为将被新行为替换。为了确保与未来版本的 Django 兼容,应修改现有模板以使用新的future库和语法。

由于以下与模板相关的显着异常,我将把它放在一个单独的答案中:

如果你从 django 模板(Django 版本>1.4) 解析器中抛出django.core.urlresolvers.NoReverseMatch异常,它可能只是模板中{% load url from future %}的使用。

在这种情况下,只需引用传递给 url 标记的 url。那就是{% url someurl %}应该变得{% url 'someurl' %}.感谢Ignacio VA为我指出这个方向。

最新更新