Как ограничить доступ обычных пользователей к странице администратора?
Я хотел бы разрешить доступ к странице администратора только администраторам и выдавать ошибку 404, если пользователь не аутентифицирован или не является сотрудником. Есть ли способ обернуть представление admin другой функцией, чтобы проверить, является ли пользователь администратором?
Попробуйте обернуть ваш метод диспетчеризации в представлении администратора следующим образом:
from django.utils.decorators import method_decorator
from django.contrib.auth.decorators import user_passes_test
@method_decorator(user_passes_test(lambda u: u.is_authenticated and u.is_staff))
def dispatch(self, request, *args, **kwargs): # noqa: D102
return super().dispatch(request, *args, **kwargs)
Если вам нужно это для нескольких представлений, напишите миксин, который переопределяет метод диспетчеризации.
так что если вы хотите простого решения, просто добавьте в ваш основной urls.py выше админских urls:
path('admin/login/', view404), #asaing view that return 404
path('admin/', admin.site.urls),