2011-07-07 12 views
0

に基づいてログインした後にユーザをリダイレクトする方法は、transfer.htmlにリダイレクトされます。ただし、ユーザーが銀行口座を作成していない場合は、代わりにcreatebankaccount.htmlにリダイレクトしてください。それ、どうやったら出来るの? はここにあなたがして、あなたがしたいビューにリダイレクトしているユーザーに記録されたアカウントの数をチェックし、独自のログイン方法を記述する必要があるとしている私のコードユーザがログインした後、彼のプロフィール

#login.html 
    <form action="." method="post" class="login_form">{% csrf_token %} 
    {{ form.as_p }} 
    <p class="submit"><button type="submit" name="submit" value="Login">Log in</button></p> 
    {% if next %}<input type="hidden" name="next" value="{{ next }}">{% endif %} 
    </form> 

#settings.py 
LOGIN_REDIRECT_URL = '/main/' 

#urls.py 
url(r'^main/$',main_home,name='main_home'), 

#views.py 
#this is the homepage 
def main_home(request): 
    url = '/%s/trans/create' % request.user.username 
    return HttpResponseRedirect(url) 

#I want this to be the homepage if user has no bank account 
def mybank_add(request): 
    url = '/%s/mybank/add' % request.user.username 
    return HttpResponseRedirect(url) 
+0

まだ 'if'を使ってみましたか? –

答えて

0

です。

django.contrib.authは、ユーザーを認証するためのフォームとメソッドまで必要なものすべてを提供しますが、必要な情報を確認してリダイレクトするのはあなた次第です。

+1

私は同意しません。簡単なlogin_routerを設定として簡単に持つことができます.LOGIN_REDIRECT_URLには、ユーザーを2つの場所のいずれかにリダイレクトする簡単な「if」ステートメントがあります。 contrib.auth.views.loginのコピーは必要ありません。 –

+0

また、銀行口座がある場合は 'main_home(request、* args、** kwargs)'を呼び出す 'if'ステートメント、または' mybank_add(request、* args、** kwargs) 'を使用して、そうでなければ。 –

+0

@Elf Hmm。 2つのリダイレクトが発生する可能性があるため、私はそのルートに行くとは思っていません。最初はLOGIN_REDIRECT_URLにリダイレクトされ、アカウントがない場合はビューにリダイレクトされます。独自のログイン方法を追加すると、リダイレクトが1回だけ発生します。これは私の意見ではよりクリーンなデザインです。 – Brandon

関連する問題