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?
Welche Art von Bedingung? –
Aktuell ist 'settings.SITE_DISABLED == True'. In jeder Anfrage ist es gleich. Also mach, was du willst. – itzMEonTV
Ich habe einen einfachen boolean has_redirected = False hinzugefügt, der entsprechend geprüft und geändert wird. –