私はすでにthisを読んでいますが、答えは私のニーズに合っていません。ミドルウェアは無限リダイレクトを行います
class RedirectIfUserIsNotActiveMiddleware(object):
"""
Middleware to redirect if account is disabled
"""
@staticmethod
def process_request(request):
if not request.user.is_active:
try:
# test to see if not already on the right url:
a = resolve(request.path)
if a.url_name != settings.URL_REDIRECT_USER_NOT_ACTIVE:
return HttpResponseRedirect(
reverse_lazy(settings.URL_REDIRECT_USER_NOT_ACTIVE))
# request.path do a 404 if URL unknown -> do nothing :
except Resolver404:
pass
そして、私はこのここに追加しました::
MIDDLEWARE_CLASSES = (
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.locale.LocaleMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.auth.middleware.SessionAuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
'django.middleware.security.SecurityMiddleware',
'third_party.hqf_middleware.RedirectIfUserIsNotActiveMiddleware',
)
をしかし、アカウントが無効になっているとき、私は上のメッセージで無限ループを取得し、私はこの非常に単純なミドルウェアを作った
webbrowser: "mywebsite.comはあなたを何回もリダイレクトしました。"私の設定で
私はこれがあります。
URL_REDIRECT_USER_NOT_ACTIVE = 'my_home_profile_account_desactivated'
をそして私が取得しようとしているURLは、常に(ステップによっても、各時間ステップ)である/en/my-home/profile/edit
私は何をしないのですか?
なぜミドルウェアを使用したいのですが、なぜユーザー認証時にリダイレクトできないのですか? –
これは私の質問ここで説明:http://stackoverflow.com/questions/35337120/is-there-a-way-to-add-custom-code-to-login-requiredと私は提案を適用しようとしているAnswer –
ミドルウェアに印刷/ロギングを追加して、 'a.url_name'と' settings.URL_REDIRECT_USER_NOT_ACTIVE'の内容を確認してください。 – Alasdair