【问题标题】:Reverse for 'note' with arguments '(1,)' and keyword arguments '{}' not found error in Django使用参数'(1,)'和关键字参数'{}'在Django中找不到'note'的反向错误
【发布时间】:2013-10-21 06:19:03
【问题描述】:

我的网址:

url(r'^(?P<task_id>\d+)/note/$', login_required(NoteView.as_view()), name='note'),

笔记成功保存后,我想重定向到带有task_id的笔记url,因此我使用reverse函数:

return HttpResponseRedirect(reverse('website.views.note', args=(task_id,)))

我的网址如下所示:

http://localhost:8000/1/note/

我认为反向只适用于http://localhost:8000/note/1/,但不适用于http://localhost:8000/1/note/。我怎样才能让它发挥作用?

【问题讨论】:

  • 你为什么要在/1/note而不是/note/1
  • 应用程序中的整个 URL 模式是 /1/note。只是想让它统一,仅此而已。
  • 在发送参数时尝试使用列表而不是元组。
  • 是的,还是不行:(
  • @user2032220 你能显示/note/1 url 定义吗?

标签: django django-urls


【解决方案1】:

您已为 URL 指定了一个特定名称 - 'note'。这意味着您不能将其反转为'website.views.note',而只能反转为'note'

reverse('note', kwargs={'task_id':task_id})

【讨论】:

  • 还是同样的错误Reverse for 'note' with arguments '()' and keyword arguments '{'task_id': u'1'}' not found.
  • 问题是我使用的是namespace,因此reverse('website:note', kwargs={'task_id':task_id}) 起作用了。
【解决方案2】:

尝试将关键字 args 传递为

return HttpResponseRedirect(reverse('website.views.note', kwargs={'task_id':task_id,}))

【讨论】:

  • @user2032220,这是您的确切代码还是您在这里遗漏了什么?
【解决方案3】:

写:

return HttpResponseRedirect(reverse('note', kwargs={'task_id':task_id,}))

网址名称应该是唯一的。在这里,“note”应该是唯一的。只需在 HttpResponseRedirect 中传递“note”即可。

【讨论】:

    猜你喜欢
    • 2014-11-25
    • 2013-07-22
    • 2013-08-21
    • 2021-07-20
    • 1970-01-01
    • 2016-11-11
    • 1970-01-01
    • 2016-12-11
    • 2017-06-17
    相关资源
    最近更新 更多