Ich habe bereits this gelesen, aber die Antwort passt nicht meine Bedürfnisse.Middleware tut eine unendliche Umleitung
ich diese sehr einfache Middleware gemacht haben:
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
Und ich habe das hier hinzugefügt:
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',
)
Aber wenn das Konto deaktiviert ist, erhalte ich eine Endlosschleife mit der Meldung auf der webbrowser: "mywebsite.com hat dich zu oft umgeleitet."
In meinen Einstellungen Ich habe dies:
URL_REDIRECT_USER_NOT_ACTIVE = 'my_home_profile_account_desactivated'
Und die URL ich versuche zu bekommen immer (auch bei jedem Schritt für Schritt) /en/my-home/profile/edit
Was bin ich?
Warum möchten Sie Middleware, warum können Sie nicht umleiten, wenn Benutzer authentifizieren? –
Es wird in meiner Frage hier erklärt: http://stackoverflow.com/questions/35337120/is-there-a-way-to-add-custom-code-to-login-required und ich versuche, die vorgeschlagene anzuwenden Antwort –
Fügen Sie Ihrer Middleware etwas Druck/Protokollierung hinzu, um herauszufinden, was 'a.url_name' und' settings.URL_REDIRECT_USER_NOT_ACTIVE' sind. – Alasdair