我想将一个 int 参数 ( user_id
) 从登录视图传递到另一个视图。这可能在一个内HttpResponseRedirect
吗?我尝试这样的事情:
return HttpResponseRedirect("/profile/?user_id=user.id")
虽然我的 urlconf 是:
(r'^profile/(?P<user_id>\d+)/$', '...')
但我不知道这是否是正确的方法。有什么建议么?
我想将一个 int 参数 ( user_id
) 从登录视图传递到另一个视图。这可能在一个内HttpResponseRedirect
吗?我尝试这样的事情:
return HttpResponseRedirect("/profile/?user_id=user.id")
虽然我的 urlconf 是:
(r'^profile/(?P<user_id>\d+)/$', '...')
但我不知道这是否是正确的方法。有什么建议么?
好吧,这显然不是正确的方法,因为您创建的 URL 与 urlconf 中的不匹配。
这样做的正确方法是依靠 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<user_id>\d+)/$', '...', name='profile')
它工作得很好。
谢谢你!
这是可能的,但最好反转 URL,然后重定向到它:
url = reverse('name_of_url', kwargs={ 'user_id': user.id })
return HttpResponseRedirect(url)
您应该确保您的 URL conf 中有一个命名参数(在我上面的示例中,它是一个名为user_id
.