Как ограничить доступ обычных пользователей к странице администратора?

Я хотел бы разрешить доступ к странице администратора только администраторам и выдавать ошибку 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),
Вернуться на верх