2

得到错误Reverse for 'view_part' with arguments '()' and keyword arguments '{'part_id': u'54'}' not found

URLS.PY

url(r'^(\d+)/(\d+)/convert/$', 'store.views.changetool', name = "convert"),
url(r'^(\d+)/view_part/$','store.views.view_part',name="view_part"),

意见.PY ( changetool)

def changetool (request, id, unipart=None):
    part = Part.objects.get(id=id)
    file = str (part.content)
    newfile = FormatConversion.ConvertToNew(file)
    return redirect('view_part', part_id = unipart)

意见.PY ( view_part)

def view_part(request, part_id, newfile = None):
...
4

1 回答 1

4

return redirect('view_part', part_id = unipart)一定是return redirect('view_part', unipart)

这里

通过传递视图的名称和可选的一些位置或关键字参数;URL 将使用 reverse() 方法进行反向解析:

编辑

行。在reverse()reverse('some_ulr_name', args=[1945]函数中,您必须在 'args' kwarg 中传递位置参数 ( ),reverse('some_url_view', kwargs={'year': 1945})在 'kwargs' kwarg 中传递关键字参数 (),因为您可以使用其他一些您不想发送到 url 的 kwarg。

但是,当您使用redirec()时,它会将所有 args 和 kwargs 发送到 reverse 方法。

一些例子:

redirect("view_part", unipart) 
# Will do a 
HttpResponseRedirect( reverse("view_part", args=[unipart]) )

#and a 
redirect("view_part", part_id=unipart)
#will do a
HttpResponseRedirect( reverse("view_part", kwargs={'part_id':unipart}) )

最后一个选项失败,因为您的 url 没有名称,请参阅此处以将名称添加到 url 参数

于 2013-07-03T15:18:55.867 回答