4

私はDjangoの標準認証を使用しています。/ログインします。/urls.pyに次の場所があります。

(r'^$', 'django.contrib.auth.views.login', {'template_name': 'home.html', }),

ユーザーがwww.myapp.comを呼び出し、ログインがsettings.pyで定義されたLOGIN_REDIRECT_URL ='/ pm/po/my/'(www.myapp.com/pm/po/my/)にリダイレクトされる場合、ログインは正常に機能します。

ユーザーがブラウザタブを閉じてブラウザを開いたままにした場合、セッションは強制終了されません(=ユーザーはログアウトされません)。これも問題ありません。

ただし、ユーザーが新しいタブを開いてwww.myapp.comにアクセスすると、ログインビューが再び表示されますが、ユーザーはすでにログインしています。ここでは、ユーザーをwww.myapp.com/pm/po/にリダイレクトします。私の/ 。

どうすればこれを達成できますか?

次の行を追加してみました。

(r'^$', 'myapp.project_management.views.projects'),
(r'^$', 'django.contrib.auth.views.login', {'template_name': 'home.html', }),

ただし、これにより次のエラーメッセージが表示されます:「このWebページにはリダイレクトループがあります」

- 解決 -

urls.py:

(r'^$', 'myapp.project_management.views.my_projects'),
(r'^login/$', 'django.contrib.auth.views.login', {'template_name': 'home.html', }),

settings.py

LOGIN_URL = '/login'
4

2 に答える 2

4

ホーム URL がログイン ページを指すようにしないでください。代わりに、必要に応じてlogin_requiredデコレーターを使用して、ログインしていないユーザーをログイン ページにリダイレクトします。

于 2012-04-20T10:23:32.550 に答える
0

ログイン URL の独自のビューを実装し、ユーザーがログインする場合 (通常は request.method = 'POST' を使用)、またはこのユーザーが既に承認されている場合はリダイレクトを行います。

于 2012-04-20T10:24:43.983 に答える