Django:在HttpResponseRedirect反向函数中传递多个参数

2 投票
2 回答
5407 浏览
提问于 2025-04-16 14:48

我正在尝试在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'),

撰写回答