Django新手:“找不到反向”

时间:2009-03-09 04:49:26

标签: django django-templates

我有一个Django形式的行:

{% for aa in my_array %}

似乎触发了这个错误:

  

模板错误

     

渲染时捕获异常:   反向   'dev_env.profiles.views.viewPlan'用   参数'('',)'和关键字   没有找到参数“{}”。

此错误消息的真正含义是什么?

我怀疑该行是否正确,但错误消息是错误的。或错误是真实的,但这条线是红鲱鱼。

我到底应该寻找什么?

更新:保罗对此进行了排序。

事实上,我有几行{% url viewPlan planId %}(所以报告的错误行是错误的),但错误被触发,因为在这种情况下planId为空。

3 个答案:

答案 0 :(得分:42)

您是否有一个名为viewPlan的视图,您可以在模板中执行以下操作:

{% url viewPlan %}
在视图中

或类似的东西:

reverse('viewPlan')

如果您这样做而且没有看起来像这样的行:

url(r'^whatever/url/$', 'dev_env.profiles.views.viewPlan', name="viewPlan"),

...在你的网址配置中我会想到你正在犯的错误。或者,更有可能的是,您可能在viewPlan URL中捕获值(可能是id或其他内容),但在反转url时不传递参数。因此,如果您正在捕获正则表达式中的任何值,请执行以下操作:

url(r'^plans/(\d+)$', 'dev_env.profiles.views.viewPlan', name="viewPlan"),

你需要这样称呼它:

{% url viewPlan 15 %}

或者像这样:

reverse('viewPlan', args=[15]);

15显然是捕获的值所期望的。

答案 1 :(得分:3)

我有同样的问题。在我的情况下,我忘了在主urls.py文件中添加子应用程序的URL:

urlpatterns = [
    re_path("admin/", admin.site.urls),
    re_path(r"^core/", include("core.urls")),
    re_path(r"^$", welcome, name="welcome")
]

答案 2 :(得分:1)

有时需要在名称参数中包含app_label

就像在core.urls中定义app_name='core'时一样

然后反转viewPlan路径为:

reverse('core:viewPlan', args=[15]);