Как ограничить неавторизованный доступ персонала к странице администратора django?
Я создал свою страницу администратора, и когда администратор входит в систему, он перенаправляет его на этот url http://127.0.0.1:8000/home/, но администратор может изменить url на http://127.0.0.1:8000/logistic/ после входа, как предотвратить это? Любая помощь будет оценена по достоинству
Я понимаю ваш вопрос следующим образом: "Я не хочу, чтобы администратор мог видеть страницу http://127.0.0.1:8000/logistic/"
Вы можете добавить требования к разрешениям в /logistic/ url несколькими способами:
- В вашем
urls.pyфайле вы можете использовать декораторpermission_required(from django.contrib.auth.decorators import permission_required). Пример:
url(
r'logistic/$',
permission_required("auth.is_internal", raise_exception=True)(
LogisticClassBasedView.as_view()
), name='logistic-page'
),
auth.is_internal может быть изменено на любое разрешение, которого нет у пользователя admin.
Если logistic является моделью в вашем models.py файле, то по умолчанию она будет иметь 4 разрешения (add, change, delete, view I.E. post, put, delete, get). У вас должно быть что-то вроде logistic.view_logistic.
Разрешения могут быть назначены на User или Group в панели администратора Django:
что соответствует следующей записи в таблице auth_permission:
что означает, что вы можете проверить наличие разрешения customers.view_customer в файле urls.py.
Чтобы получить customers префикс разрешения, вам нужно проверить django_content_type вашего приложения, которое соответствует content_type_id скриншота для id=13.
Если у вашего logistic нет модели в models.py, это не сработает.