Задать вопрос
rishatss
@rishatss
Simple Developer ^)

Как добавить свой рендеринг страницы в админке?

Привет всем.

Как в админку подключить что-то типа обычного рендеринга html страницы с описаной логикой и доступностью только админам. Раньше все сводилось к моделям.

5a04689179e99882676001.pngДопустим в STUDENTS добавить Мониторинг и при открытии его там не дэфолтный CRUD, а моя тема с графиками например без CRUD но в рамках дизайна админки)

В документации кратко и не понятно. Или может я не нашел то что нужно.
  • Вопрос задан
  • 140 просмотров
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 3
Astrohas
@Astrohas
Python/Django Developer
Кратко- переопределите шаблон (https://docs.djangoproject.com/en/1.11/ref/contrib... ). В классе моделадмина переопределяете changelist_view и там проверяете пользователя на админство.
В зависимости от проверки кастомизируете все в переопределенном шаблоне
Ответ написан
syschel
@syschel
freelance/python/django/backend
Как изменить шаблон действующей страницы в админке, указал Astrohas
Но если теперь нужно в пределах админки создать новую страницу (не относящуюся к существующему функционалу CRUD), куда и будет указывать ссылка из изменённого шаблона. То переопределяем get_urls()
P.S. Вьюху от данного проекта можно в файле admin.py описать как в примере, но я бы вынес всётаки в views.py

пример:
class PetAdmin(admin.ModelAdmin):
    ...
    def get_urls(self):
        urls = super(PetAdmin, self).get_urls()
        my_urls = [
            url(r'^(?P<id>\d+)/radius/$', self.admin_site.admin_view(PetAdminRadius))
        ]
        return my_urls + urls

И открывается сиё чудо по адресу:
localhost:8000/admin/app_name/model_name/639/radius
Ответ написан
Комментировать
Xaip
@Xaip
Из settings.py надо убрать 'django.contrib.admin'
Из urls убрать url(r'^admin/', admin.site.urls) и добавить своё приложения
А в самом приложении можно проверять суперпользователя методом user.is_superuser если у вас стандартная модель user
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы