Python 带有int参数的Django HttpResponseRedirect

Python 带有int参数的Django HttpResponseRedirect,python,django,django-views,django-urls,Python,Django,Django Views,Django Urls,我想将int参数(user\u id)从登录视图传递到另一个视图。在HttpResponseRedirect中是否可能发生这种情况?我试着这样做: return HttpResponseRedirect("/profile/?user_id=user.id") 而我的urlconf是: (r'^profile/(?P<user_id>\d+)/$', '...') (r'^profile/(?P\d+/$,'…')) 但我不知道这是不是正确的方法。有什么建议吗?这是可能的,但最

我想将int参数(
user\u id
)从登录视图传递到另一个视图。在
HttpResponseRedirect
中是否可能发生这种情况?我试着这样做:

return HttpResponseRedirect("/profile/?user_id=user.id")
而我的urlconf是:

(r'^profile/(?P<user_id>\d+)/$', '...')
(r'^profile/(?P\d+/$,'…'))

但我不知道这是不是正确的方法。有什么建议吗?

这是可能的,但最好将URL反转,然后重定向到它:

url = reverse('name_of_url', kwargs={ 'user_id': user.id })
return HttpResponseRedirect(url)

您应该确保URL配置文件中有一个命名参数(在我上面的示例中,它是一个名为
user\u id

的参数)。好吧,这显然不是正确的方法,因为您创建的URL与URL配置文件中的URL不匹配

正确的方法是依靠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)

请注意,在URL中使用kwargs比使用args更好,但我保留了您原来的设置。

最后,我通过以下操作组合了上述答案:

url = reverse('profile', kwargs={ 'user_id': user.id })
return HttpResponseRedirect(url)

url(r'^profile/(?P\d+/$,'…',name='profile')
它工作得很好


谢谢!

我想您可以使用
login
view()的
next
参数。这将是最简单的。
url(r'^profile/(?P<user_id>\d+)/$', '...', name='profile')