我想将一个int参数(user_id
)从登录视图传递到另一个视图。这可能在HttpResponseRedirect
范围内吗?我尝试这样的事情:
return HttpResponseRedirect("/profile/?user_id=user.id")
虽然我的urlconf是:
(r'^profile/(?P<user_id>\d+)/$', '...')
但我不知道这是不是正确的方法。有什么建议吗?
答案 0 :(得分:4)
嗯,这显然不是正确的方法,因为您创建的网址与您的网址中的网址不匹配。
这样做的正确方法是依靠Django为您完成。如果您为URL定义命名:
urlpatterns += patterns('',
url(r'^profile/(?P\d+)/$', ' ...', name='profile'),
)
然后您可以使用django.core.urlresolvers.reverse
使用您的参数生成该URL:
redirect_url = reverse('profile', args=[user.id])
return HttpResponseRedirect(redirect_url)
请注意,在您的网址中使用kwargs而不是args会更好,但我保留了原来的效果。
答案 1 :(得分:3)
最后,我将上述答案结合起来:
url = reverse('profile', kwargs={ 'user_id': user.id })
return HttpResponseRedirect(url)
和
url(r'^profile/(?P<user_id>\d+)/$', '...', name='profile')
它完美无缺。
谢谢你!答案 2 :(得分:1)
这是可能的,但最好反转URL然后重定向到它:
url = reverse('name_of_url', kwargs={ 'user_id': user.id })
return HttpResponseRedirect(url)
你应该确保你的URL conf中有一个命名参数(在上面的例子中,它是一个名为user_id
的参数。