Python 带有int参数的Django HttpResponseRedirect
我想将int参数(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+/$,'…')) 但我不知道这是不是正确的方法。有什么建议吗?这是可能的,但最
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')