Ich muss Middleware erstellen, um zu überprüfen, ob der Benutzer Administrator ist oder nicht, und wenn nicht, leiten Sie ihn auf die Startseite weiter. Ich denke, ich sollte @permission_required verwenden, bin mir aber nicht sicher, wie ich es in Middleware verwenden soll.
Dies ist eine Funktion zum Erstellen eines neuen Benutzers:
Code: Select all
# views.py
def createNewUser(request):
if request.method == 'POST':
user = User.objects.create(username=request.POST.get('username'),
email=request.POST.get('email'),
password=request.POST.get('password'))
if request.POST.get('is_admin') == 'True':
is_admin = 'True'
else:
is_admin = 'False'
user.user_permissions.clear()
user.save()
useraccount = UserAccount.objects.create(user=user, is_admin=is_admin)
useraccount.save()
return redirect('users')
return render(request, 'adminpanel/create_user.html', {})
Jetzt muss ich seine Berechtigungen vor jeder Funktion überprüfen:
Code: Select all
@permission_required('poll.view_category', login_url='home')
def home(request):
return render(request, 'adminpanel/main.html', {})
Und ist es besser, funktions- oder klassenbasierte Middleware zu verwenden? Was ist der Unterschied?