5

user_idログインビューから別のビューにintパラメータ()を渡したい。それは内で可能HttpResponseRedirectですか?私はこのようなことを試みます:

return HttpResponseRedirect("/profile/?user_id=user.id")

私のurlconfは:

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

しかし、それが正しい方法かどうかはわかりません。助言がありますか?

4

3 に答える 3

4

作成した URL が urlconf の 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 では arg ではなく kwargs を使用する方がよいことに注意してください。

于 2012-05-28T13:05:31.787 に答える
3

最後に、次のようにして上記の回答を組み合わせました。

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

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

そしてそれは完璧に機能しました。

ありがとう!

于 2012-05-28T22:43:32.703 に答える
1

それは可能ですが、URL を逆にしてからリダイレクトすることをお勧めします。

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

URL conf に名前付きパラメーターが含まれていることを確認する必要があります (上記の例では、user_id.

于 2012-05-28T13:04:27.147 に答える