2011-11-08 16 views
2

ユーザーがDjangoアプリにログインすると、ログイン後に表示されるページのURLをどのように変更できますか? は、私は現在、次のビューがあります。Djangoでリダイレクトする場所のパーマリンクを変更するにはどうすればよいですか?

def users_login(request): 
    username = request.POST['username'] 
    password = request.POST['password'] 
    user = authenticate(username=username, password=password) 
    if user is not None: 
    login(request, user) 
    return HttpResponseRedirect("/start/") 

を私はアプリがdomain.com/start/にリダイレクトする必要があると述べているが、残念ながら、それはしていません。代わりにdomain/login /に行きます。これは、ログインフォームのaction属性の場所です。

私は私の見解では、次のコードがある場合:

return redirect('http://www.google.com/') 

を私はエラーを取得します。なぜか分からない。フォームでのみ発生します。ユーザーがフォームを送信すると、対応するビューに静的ページへのリダイレクトがあっても、URLはアクション属性のURLにとどまります。

LOGIN_REDIRECT_URL = '/start' 

LOGIN_REDIRECT_URL = '/start/' 
+0

本当にそうではありませんか?最初に ''/start/''にリダイレクトしてから 'domain/login /'にリダイレクトすると思います。 Firebugで確認してください。 – DrTyrsa

+0

こんにちは、/ start /にリダイレクトしてからdomain/login /にリダイレクトしません。 – egidra

答えて

1

ユージンSoldatovは正しいですが、あなたは(あなたがとにかくそれを使用する必要があります)それを動作させるためにbuilt-in login viewを使用する必要があります。

+0

これをどのようにすべてのフォームに一般化するのですか?ユーザーが新しい投稿を作成すると、URLはまだフォームのアクション属性のURLですが、新しい投稿のpermalinkにします。 – egidra

+0

@egidra Djangoにはこのような問題はありません。 'HttpResponseRedirect'またはそれより良い[' redirect'](https://docs.djangoproject.com/en/dev/topics/http/shortcuts/#redirect)を使用すれば、すべてうまくいくでしょう。 – DrTyrsa

+0

私は現在HttpResponseRedirectを使用していますが、ユーザーがフォームを送信すると、URLはフォームアクション属性の値になります。 – egidra

2

はちょうどあなたのsettings.pyにこの文字列を追加します。

関連する問題