【问题标题】:django url _reverse _ not a valid view function or pattern namedjango url _reverse _ 不是有效的视图函数或模式名称
【发布时间】:2020-03-13 21:59:48
【问题描述】:

重定向网址是 "liveinterviewList/2"

当然,我在 url.py 中声明了该 url 此外,当我在浏览器中手动输入该网址时,它运行良好。 怎么了?

更多问题。 在这种情况下,我将 user_id 写在 url 上。 我认为,这不是制作 url 模式的好方法。 但我不知道如何在没有 url 模式的情况下传递 user_id 变量。

请给我一个提示。

【问题讨论】:

  • 请复制粘贴代码,不要使用截图。它可以更轻松地回答和搜索您的问题。

标签: django django-urls django-url-reverse


【解决方案1】:

您应该在路径 url 中添加一个名称并使用它来重定向。

正如 django 文档所说:

网址:

urlpatterns = [
   path('/name', name="some-view-name")
]

def my_view(request):
    ...
    return redirect('some-view-name')

【讨论】:

    【解决方案2】:

    HariHaraSudhan 遗漏的是如何使用参数。对于你的情况,你会想要这样的:

    path(r'liveinterviewList/<int:userId>', ..., name='live-interview'),
    

    然后当你准备好反转时,使用这个:

    reverse('app:live-interview', kwargs={ 'userId': userId })
    

    其中 app 是您的视图所在的应用的名称。如果您的 url 位于主 urls 文件中,则不需要 app: 前缀。

    【讨论】:

    • 请注意,您不需要将reverseredirect 一起使用。您可以使用 return redirect('app:live-interview', userId=userId) 而不是 return redirect(reverse('app:live-interview', kwargs={ 'userId': userId }))
    • 我用另一种意见修复了我的错误,更容易实现。但是您的建议比其他答案更深刻。所以我会研究你的答案。非常感谢你
    【解决方案3】:

    Django reverse 函数接受路径名而不是 URL。

    可以说我有这样的 url 模式

    urlpatterns = [
       path('/users/list', name="users-list")
    ]
    

    在我看来我可以这样使用

    def my_view(request):
         return redirect(reverse("users-list"));
    

    【讨论】:

    • 虽然我用另一个答案修复了我的错误,但您的答案包含更多提示。下次我会参考你的方法。非常感谢你
    猜你喜欢
    • 2018-11-29
    • 2019-05-09
    • 1970-01-01
    • 2020-08-26
    • 1970-01-01
    • 2018-01-25
    • 2019-06-27
    • 1970-01-01
    • 2019-02-15
    相关资源
    最近更新 更多