Django:重定向到带参数的视图

时间:2017-12-09 17:23:08

标签: python django authentication

我正在使用Django身份验证。每当用户登录时,我想将他重定向到/ profile / user_id,而user_id是一个数字。我可以通过request.user.profile.id获取user_id的值。在settings.py中,我有LOGIN_REDIRECT_URL = 'app_1:index'

APP_1 / urls.py:

url(r'^profile/$', views.index, name='index'),
# ex: /profile/5/
url(r'^profile/(?P<user_id>[0-9]+)/$', views.profile, name='profile'),

app_1 / views.py(我已尝试的内容已被评论):

def index(request):
userid = request.user.profile.id
#return render(request, 'app_1/index.html', context)
#return profile(request, request.user.profile.id)
#return render(request, 'app_1/user_prof.html', {'user': request.user.profile.id})
#return redirect(profile, user_id= request.user.profile.id)
return redirect('profile', user_id=userid)


def profile(request, user_id):
user = get_object_or_404(Profile, pk=user_id)
return render(request, 'app_1/user_prof.html', {'user': user})

我必须遗漏一些东西,因为这应该很容易,但我坚持下去。提前谢谢。

编辑:我得到的错误是Reverse for 'profile' not found. 'profile' is not a valid view function or pattern name.http://dpaste.com/270YRJ9

1 个答案:

答案 0 :(得分:1)

尝试使用此代替

from django.urls import reverse

return redirect(reverse('profile', kwargs={"user_id": userid}))

修改

怎么样:return redirect('app_1:profile', user_id=userid)