Переопределение просмотров администратора - Django - PullRequest
1 голос
/ 10 февраля 2012

Я использую Django 1.3 и python 2.7. Я использую приложение администратора Django. Я хочу, чтобы при входе в систему superuser он показывал admin / index.html со всеми моделями, что является поведением по умолчанию, но если какой-либо другой пользователь входит в систему, но не является суперпользователем, то он должен показывать совершенно другой шаблон с моими данными (например, «abc.html»). Что я должен сделать для этого? Я думаю, мне нужно переопределить какое-то представление администратора, чтобы сделать это, но понятия не имею?

Пожалуйста, помогите. Если вам нужна дополнительная информация, пожалуйста, оставьте комментарий:)

Ответы [ 3 ]

3 голосов
/ 10 февраля 2012

Я бы создал промежуточное ПО, которое проверяет, является ли пользователь суперпользователем или нет. Если пользователь не является суперпользователем, вы перенаправляете его / ее на пользовательскую страницу администратора вместо страницы по умолчанию.

class SuperUserMiddleware(object):
    def process_request(self, request):
        user = request.session.user
        if not user.is_superuser:
            return HttpResponseRedirect(NON_SUPERUSER_URL)
        ...
0 голосов
/ 10 февраля 2012

Вы создаете модифицированное определение класса AdminSite с дополнительными правилами доступа.

class SuperUserAdminSite( AdminSite ):
    def has_permission(self, request):
        return request.user.is_active and request.user.is_staff and request.user. is_superuser

Теперь вы можете создавать два объекта AdminSite, один для обычных пользователей, другой для суперпользователей.

У вас может быть два пути в ваших URL для двух сайтов администраторов.

Суперпользователи могут использовать оба пути.

Обычные пользователи смогут использовать только обычный путь пользователя в URL.

https://docs.djangoproject.com/en/1.3/ref/contrib/admin/#adminsite-objects

0 голосов
/ 10 февраля 2012

Вы должны изменить представление администратора сайта. В документации Django все подробно упоминается. Пожалуйста, проверьте, что https://docs.djangoproject.com/en/1.3/ref/contrib/admin/, если у вас есть какие-либо ошибки, пожалуйста, напишите с некоторыми деталями кода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...