{%url%}给我NoReverseMatch错误,而reverse()返回url就好了。为什么?

时间:2012-04-27 22:56:43

标签: django django-urls django-registration django-1.4

我不知道这个SO question是否与我要描述的问题相同,但它确实有相同的症状。不幸的是,在我写作时,它仍然没有得到解决。

所以这是我的问题。我想把James Bennett的django-registration app添加到我的django项目中。我已经完成了根据我的需求配置它 - 自定义模板和网址。就在我认为一切都很好的时候。我在使用NoReverseMatch时遇到了{% url 'testing' item_id=123 %}错误(我也尝试使用视图名称myapp.views.test,而不是运气)在django-registration所需的一个自定义模板中。有趣的是,我在shell中尝试了reverse('testing', kwargs={'item_id':123}),并且返回的网址很好。我认为{% url %}在后​​端使用reverse(),但为什么我会得到不同的结果?

urls.py: (我网站的网址)

urlpatterns = patterns('myapp.views',
    url(r'^test/(?P<item_id>\d+)/$', 'test', name='testing'),
)

activation_email.txt:(上述模板。请注意django-registration要求的 .txt 扩展中的故意,这不应该是导致问题的原因。)

{% comment %}Used to generate the body of the activation email.{% endcomment %}
Welcome to {{ site }}! Please activate your account by clicking on the following link:

{% url 'testing' item_id=123 %}

Note the activation link/code will be expired in {{ expiration_days }} days.

我不知道这是否重要但只是认为我应该提及 activation_email.txt 存储在myapp templates 目录中,尽管它已被使用按django-registration

另外,我正在使用django 1.4

我有一种感觉,这个问题与url名称空间有关,这是一个我从未理解过的话题,但这只是一个天真的猜测。 (IMO,django文档非常适合解释有关django的所有内容,除非涉及到url名称空间)

1 个答案:

答案 0 :(得分:12)

我不是这里的专家,但在我正在研究的Django项目中,我正在使用没有引号的url名称。我只是在我的一个模板中的类似行周围添加了引号,它产生了与错误相同的错误。

尝试:

{% url testing item_id=123 %}