Ich möchte eine zweite Admin-Site implementieren, die eine Teilmenge der Funktion der primären Admin-Site bietet. Das ist möglich und beschrieben in der Django docsWie kann man die Django-Admin-Seite für Nicht-Mitarbeiter zugänglich machen?
Allerdings möchte ich den Zugriff auf die primäre Admin-Site beschränken. Einige Benutzer können auf die 2ndary-Site, nicht aber auf die primäre Site zugreifen.
Um diese Funktion zu implementieren, würde ich diesen Benutzer möchte nicht in dem Personal zu sein (is_staff = False) und schreibe die AdminSite.has_permission
class SecondaryAdminSite(AdminSite):
def has_permission(self, request):
if request.user.is_anonymous:
try:
username = request.POST['username']
password = request.POST['password']
except KeyError:
return False
try:
user = User.objects.get(username = username)
if user.check_password(password):
return user.has_perm('app.change_onlythistable')
else:
return False
except User.DoesNotExist:
return False
else:
return request.user.has_perm('app.change_onlythistable')
Leider ist dieser Ansatz nicht funktioniert. Der Benutzer kann sich anmelden, kann jedoch auf der sekundären Verwaltungssite nichts sehen.
Was ist falsch an diesem Ansatz? Haben Sie eine Idee, wie Sie diese Funktion implementieren?
Vielen Dank im Voraus
Warum partitionieren Sie Ihre Benutzer nicht in Superusers, Manager, Kunden usw. - Berechtigungssystem funktioniert perfekt. –
@Tomasz: Ich mache das auch. Die 2ndary-Admin-Site hat einen anderen Zweck, also unterschiedliche Arten von Benutzern. Ich möchte vermeiden, dass sie sich mit dem üblichen Admin verbinden. – luc
Ich nehme an, du verifizierst, dass die richtige 'has_permission' aufgerufen wird? Wird auf der Seite überhaupt nichts angezeigt (d. H. Es ist vollständig leer) oder werden die Verwaltungsfunktionen einfach ausgeblendet? –