Django:在HttpResponseRedirect反向函数中传递多个参数
我正在尝试在Django的HttpResponseRedirect的reverse函数中传递多个参数,但我一直收到这个错误信息:
找不到带有参数'()'和关键字参数'{ 'company': u'Company ', 'sid': 47606734 }'的'DemoVar.views.success'的反向链接。
#Calling function
return HttpResponseRedirect(reverse('DemoVar.views.success',kwargs={'sid':int(ph), 'company':company}))
#Function definition
def success(request, sid, company):
#urls.py
url(r'^success/(?P<sid>[\d]+)/(?P<company>[\w\d-]+)/$','success', name='DemoVar_success'),
我尝试在reverse函数中传递'args',但仍然出现类似的错误。请帮帮我。
更新:我尝试将参数作为一个元组传递,但输出结果还是一样。
return HttpResponseRedirect(reverse('DemoVar.views.success',args=(ph, company,)))
#Error
Reverse for 'DemoVar.views.success' with arguments '(47606734, 'Dummy Company')' and keyword arguments '{}' not found.
2 个回答
0
你的网址叫做 DemoVar_success
,而不是 DemoVar.views.success
。
1
我在urls.py文件里的正则表达式写错了。原来Django会查看urls.py来判断视图函数需要什么类型的输入,在我的例子中是'DemoVar.views.success'。因为我设置的正则表达式不允许有'空格',所以Django报错了。我把正则表达式改成可以接受包含空格的输入。
url(r'^success/(?P<sid>[\d]+)/(?P<company>[\s\w\d-]+)/$','success', name='DemoVar_success'),