11

我试图在 django 中使用 url 模板标签,但不走运,

我像这样定义了我的 urls.py

urlpatterns = patterns('',
    url(r'^analyse/$',              views.home,  name="home"),
    url(r'^analyse/index.html',     views.index, name="index"),
    url(r'^analyse/setup.html',     views.setup, name="setup"),
    url(r'^analyse/show.html',      views.show,  name="show"),
    url(r'^analyse/generate.html',  views.generate, name="generate"),

我像这样在我的视图中定义了 url 模式

{% url 'show'%}

然后我收到了这个错误信息

渲染时遇到异常:未找到带有参数“()”和关键字参数“{}”的“显示”的反向。

原始回溯(最后一次调用):文件“/Library/Python/2.5/site-packages/django/template/debug.py”,第 71 行,在 render_node 结果 = node.render(context) 文件“/Library/Python /2.5/site-packages/django/template/defaulttags.py”,第 155 行,在渲染 nodelist.append(node.render(context)) 文件中“/Library/Python/2.5/site-packages/django/template/defaulttags .py",第 382 行,在 render raise e NoReverseMatch: Reverse for ''show'' with arguments '()' 和关键字参数 '{}' 未找到。

我想知道为什么 django 无法渲染?在模板中定义它的正确方法是什么?

4

5 回答 5

13

重要提示:这是针对 django 1.4 的。在 django 1.5 中正好相反。

尝试使用不带引号的网址名称

{% url show %}

不是这个

{% url 'show'%}
于 2012-11-16T14:38:57.947 回答
10

问题是您在“显示”周围的单引号。将此更改为“显示”,它应该适合您。

这里

于 2010-01-22T16:56:29.173 回答
3

您可能有一些尚未实现的视图。当使用 {% url ... %} 过滤器时,模板引擎似乎试图从 urls.py 中的模式中查找所有视图。

它通常会为您在 urls.py 中的最后一个模式显示错误。

尝试注释掉您尚未实现的每个 url 模式。

还要确保使用完整路径:

{% url myapp.views.home %}

url 模板过滤器看起来真的很不稳定。尽量保持未来的兼容性

于 2012-06-28T16:09:50.097 回答
1

You may need to be a little more specific on which view you're trying to use:

{% url appname.views.show %}
于 2010-02-24T16:28:52.830 回答
0

对于什么是值得的,我有同样的问题,虽然我不记得现在的原因,但这为我解决了这个问题。来自我正在开发的SCRUM应用程序的示例。

url(r'^$', 'scrum.views.index',  name='scrum-index'),
于 2009-11-22T05:44:13.813 回答