Django新手:“找不到反向”

Posted

技术标签:

【中文标题】Django新手:“找不到反向”【英文标题】:Django: "Reverse not found" 【发布时间】:2010-10-12 02:55:48 【问题描述】:

我在 Django 表单中有一行:

% for aa in my_array %

这似乎触发了这个错误:

模板错误

渲染时遇到异常: 反向为 'dev_env.profiles.views.viewPlan' 与 参数 '('',)' 和关键字 未找到参数“”。

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

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

我到底应该寻找什么?

更新:Paulo 对此进行了排序,如下所示。

事实上,我在几行之外有一个% url viewPlan planId %(因此报告的错误行是错误的),但是由于planId在这种情况下为空而触发了错误。

【问题讨论】:

【参考方案1】:

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

% url viewPlan %

或类似的视图:

reverse('viewPlan')

如果你这样做了,但你没有像这样的一行:

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

...在您的 url 配置中,我想这就是您遇到的错误。或者,更有可能的是,您可能在 viewPlan URL 中捕获了一个值(可能是 id 或其他东西),但在反转 url 时没有传递参数。因此,如果您在正则表达式中捕获任何值,如下所示:

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

你需要这样称呼它:

% url viewPlan 15 %

或者像这样:

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

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

【讨论】:

谢谢你,这让我朝着正确的方向前进。实际上只是我在 % url 中传递的参数在这种情况下是空的。干杯 如果将 'viewPlan' 替换为 'viewPan' 也会出现同样的错误 +1 for "reverse('viewPlan', args=[15])" .. 那该死的 args[] !!【参考方案2】:

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

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

然后反转viewPlan 路径将是:

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

【讨论】:

当我有来自多个应用的​​视图并且我试图重定向到单独应用中的视图时,这帮助我解决了同样的问题。【参考方案3】:

我有同样的问题。就我而言,我忘记在主 urls.py 文件中添加子应用程序的 url:

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

【讨论】:

这确实解决了我的问题。需要一种访问子网址的方法。谢谢

以上是关于Django新手:“找不到反向”的主要内容,如果未能解决你的问题,请参考以下文章

如何解决找不到反向匹配的问题?

Spring Boot JPA 错误:无法处理托管/反向引用“defaultReference”:从类型中找不到反向引用属性

使 django url 标签静默失败

找不到 Django 404 错误页面...当前路径与最后一个匹配

Django 错误:“image_upload”的反向,没有找不到参数?

在 Django Rest Framework 中找不到资源时返回自定义 404 错误