2016-03-18 32 views
0

私は自分のアカウントページにログインしたユーザーをリダイレクトしようとしています。Django - ログインしてユーザープロフィールページにリダイレクト

この質問は何度か尋ねられましたが、ほとんどが古くて/accounts/profile/Django - after login, redirect user to his custom page --> mysite.com/usernameのような静的なURLを使用しています。私はこのソリューションを達成するために動的なURL命名を使用したいと思います。

たとえば、アカウントのランディングページに次のURLパターンがある場合はどうなりますか?

url(r'^account/(?P<pk>\d+)/(?P<name>\w+)/$', AccountLanding.as_view(), name="account-landing")`. 

どのように私はLOGIN_REDIRECT_URLためsettings.pyで引数を渡すのでしょうか?

+0

あなたの質問には、あなたがリンクしたページのStuが回答します。 – Alasdair

+0

@Alasdairいいえ、そうではありません。私がこれをもう一度尋ねた理由は、Djangoがそれ以降数回更新されて以来、答えられて以来、4年間に新たな開発が行われたかどうかを見ることです。 – thefoxrocks

+0

@Alasdair Stuは、あなたが言ったように、基本的に私が試していたものである 'LOGIN_REDIRECT_URL'に動的引数を使うことはできません。それが変更されたかどうか。 – thefoxrocks

答えて

1

LOGIN_REDIRECT_URLの動的引数(ログインしたユーザーの主キーなど)を使用することはできません。

一つの仕事は、周りのランディングページにリダイレクトビューを作成することです:

from django.contrib.auth.decorators import login_required 
from django.shortcuts import redirect 

@login_required 
def account_redirect(request): 
    return redirect('account-landing', pk=request.user.pk, name=request.user.username) 

は、このビューのURLパターンを作成します。

urlpatterns = [ 
    url(r'^account/$', account_redirect, name='account-redirect'), 
] 

を次にLOGIN_REDIRECT_URLように、そのビューを使用します

LOGIN_REDIRECT_URL = 'account-redirect' 
+0

LOGIN_REDIRECT_URLにはビューメソッドを割り当てることもできます。ここでは、 'account-redirect/'にリダイレクトすることができます。ここで、pkはユーザーに割り当てられた特定のキーです。 – RA123

+0

@ RA123あなたが何を意味するのか分かりません。あなた自身の答えを追加したい場合は、質問を再開しました。 – Alasdair

+1

いいえ、申し訳ありません。このメソッドは非推奨であるため、回答を追加したくありません。しかし、OPが依然としてそれを使用したいと思っている場合は、言及したかっただけです。 https://docs.djangoproject.com/en/1.9/ref/settings/#login-redirect-url – RA123

関連する問題