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

我在 Django 表单中有一行:

{% for aa in my_array %}

这似乎触发了这个错误:

模板错误

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

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

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

我到底应该寻找什么?

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

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

【问题讨论】:

    标签: django django-templates


    【解决方案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")
    ]
    

    【讨论】:

    • 这确实解决了我的问题。需要一种访问子网址的方法。谢谢
    猜你喜欢
    • 2014-09-18
    • 1970-01-01
    • 1970-01-01
    • 2018-01-28
    • 2013-10-05
    • 2018-06-07
    • 1970-01-01
    • 1970-01-01
    • 2013-08-23
    相关资源
    最近更新 更多