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 404 错误页面...当前路径与最后一个匹配