Django url templatetag(但不是rev​​erse())错误:渲染时捕获NoReverseMatch

maj*_*dal 9 django django-urls

我正在尝试使用url模板标记:

{% url all-labs-map %}
Run Code Online (Sandbox Code Playgroud)

但是当我查看页面时,我收到此错误:

Caught NoReverseMatch while rendering: Reverse for 'all-labs-map' with arguments '()' and keyword arguments '{}' not found.
Run Code Online (Sandbox Code Playgroud)

当我像这样使用模板标签时:

{% url gmaps.views.all_labs %}
Run Code Online (Sandbox Code Playgroud)

它工作得很好.

这是URL conf:

urlpatterns = patterns('gmaps.views',
    url(r'^lab_list/$', 'all_labs', name="all-labs-map" ),
)
Run Code Online (Sandbox Code Playgroud)

我尝试使用django shell来查看命名URL是否存在问题,但是使用了

reverse('all-labs-map') 
Run Code Online (Sandbox Code Playgroud)

返回正确的URL.

关于发生了什么的任何想法?

谢谢!

迈季

编辑:

我在ubuntu上使用django 1.2与nginx服务器和gunicorn和virtualenv.我在使用库加载的自定义标记时遇到了另一个问题,但即使我使用了正确的标记注册语法,也无法识别标记本身.任何想法将非常感谢!

Izk*_*ata 6

这在Google搜索结果中仍然很高,但还没有人正确回答.关键是:

{% load url from future %}
Run Code Online (Sandbox Code Playgroud)

在Django 1.3之前,这是urltemplatetag 的语法:

{% url view_name arg1 %}
Run Code Online (Sandbox Code Playgroud)

在Django 1.5中,这将是语法:

{% url "view_name" arg1 %}
Run Code Online (Sandbox Code Playgroud)

从Django 1.3开始,旧版本可以工作,但会给你一个弃用警告,告诉你{% load url from future %}并切换到该模板标签的新版本,为Django 1.5做准备