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