2012-05-28 24 views
5

Bir int parametresini (user_id) giriş görünümünden başka bir görünüme geçirmek istiyorum. HttpResponseRedirect içinde bu mümkün mü?Django HttpResponseT int parametresiyle yönlendirin

benim urlconf olduğunu
return HttpResponseRedirect("/profile/?user_id=user.id") 

ederken: Böyle bir şey denemek

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

Ama bu doğru yolu ise bilmiyorum. Baska öneri?

+0

"Oturum açma" görünümünün 'next' argümanını kullanabileceğinizi düşünüyorum ([docs] (https://docs.djangoproject.com/en/dev/topics/auth/#django.contrib.auth.views.login)). En basit olanı olacak. – DrTyrsa

cevap

4

Eh, bu, açıkça doğru bir yol değil.

bunu yapmanın doğru yolu sizin için bunu yapmak için Django temel almaktır. URL tanımınızı verirseniz isim:

urlpatterns += patterns('', 
    url(r'^profile/(?P\d+)/$', ' ...', name='profile'), 
) 

o zaman argümanlarla bu URL'yi oluşturmak için django.core.urlresolvers.reverse kullanabilirsiniz: o URL'lerinizdeki kwargs ziyade args kullanmak daha iyidir

redirect_url = reverse('profile', args=[user.id]) 
return HttpResponseRedirect(redirect_url) 

Not ama senin gibi sakladım başlangıçta vardı.

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

ve

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

ve mükemmel çalıştı:

1

mümkündür ancak URL'yi ters ve sonra buna yönlendirmek daha iyi Yani:

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

Sen URL conf o adında bir parametre benim yukarıdaki örnekte içinde bir adlandırılmış parametre (var olan emin olmalısınız oluşturduğunuz URL, urlconf tane eşleşmediğinden user_id.

3

Son olarak, yaparak yukarıdaki cevapları birleştirdi.

Teşekkürler!