2017-01-17 5 views
0

Ich bin eine einfache kundenspezifische Middleware zu schreiben, die alle Benutzer auf eine bestimmte Seite umleiten soll, wenn ein Einstellungen constante auf True gesetzt ist:Benutzerdefinierte Middleware nicht umleiten nicht

aus django.shortcuts umleiten importieren von django conf-Importeinstellungen

class DisableSiteMiddleware(object): 
    """If site is disabled, user is redirected to a simple page""" 
    print("Class") 

    def process_request(self, request): 
     print("func") 
     if settings.SITE_DISABLED == True: 
      return redirect("/site-disabled") 

In urls.py, aber tut es mit einer beliebigen uRL

url(r'^site-disabled/', site_disabled) 

Was passiert, ist neugierig: auf Browser-Seite wird es nicht anyt laden suchen und eine Browserfehlerseite anzeigen. Auf der Konsole kann ich sehen, dass es wiederholt "func" druckt, was bedeutet, dass process_request mehrmals aufgerufen wird. Ich vermute, dass eine Schleife vom Browser gelöscht wird.

Was könnte das Problem sein?

Antwort

1

Keine Magie hier.

Es wird jedesmal auf /site-disabled umgeleitet. Legen Sie Bedingungen auf.

+0

Welche Art von Bedingung? –

+0

Aktuell ist 'settings.SITE_DISABLED == True'. In jeder Anfrage ist es gleich. Also mach, was du willst. – itzMEonTV

+0

Ich habe einen einfachen boolean has_redirected = False hinzugefügt, der entsprechend geprüft und geändert wird. –

Verwandte Themen