/<url>/
我正在尝试将我的视图重定向到带有get请求参数的网址我收到了上述错误,
查看:
return HttpResponseRedirect(reverse('corporate_contribution/?event_id=',args=(event_id, )))
URL:
url(r'^corporate_contribution/$','corporate_contribution', name='corporate_contribution'),
我是Django的新手,如果我做错了,请告诉我。
答案 0 :(得分:1)
查看参数和查询字符串不是一回事。反向函数中的args
和kwargs
是传递给视图函数的参数。查询字符串(即网址中?
之后的参数)将被解析为request.GET
字典。
一个简单的解决方案是将您的查询字符串附加到网址:
return HttpResponseRedirect('%s?event_id=%s' % (reverse('corporate_contribution'), event_id))
另一种方法,即经常使用的方法,是捕获部分网址并将其用作视图的参数:
urls.py:
url(r^corporate_contribution/(?P<event_id>[\d]+)/$, 'corporate_contribution', name='corporate_contribution')
views.py:
def corporate_contribution(request, event_id):
...
def other_view(request, *args, **kwargs):
...
return HttpResponseRedirect(reverse('corporate_contribution',args=(event_id,)))
这将确保您的视图始终通过event_id
。请注意,传递给reverse
函数的参数是url的名称(由name='...'
定义),而不是实际的url本身,因此它绝对不应包含斜杠。这样您就可以在不破坏代码的情况下更改网址,因为网址将随处更改。