Django Пользовательский шаблон администратора
Я изменил шаблон индекса администратора сайта в Django следующим образом:
admin.site.index_template = "admin/list-aprovals.html"
Но как я могу отправить свою модель на эту страницу или добавить пользовательское представление для этого url:
path('admin/', admin.site.urls),
Итак, я хочу работать с существующей админкой django, но я хочу только изменить шаблон и видеть свои модели в этом специальном шаблоне, но с оригинальным приложением админки. Возможно ли это в Django? Как мне решить эту проблему?
Я пробовал использовать пользовательское приложение, но я хочу использовать оригинальную админку contrib.
Первый: Убедитесь, что администратор указан в списке INSTALLED_APPS
.
Второе: Зарегистрируйте свою модель в админке в файле admin.py с помощью
# admin.py
from django.contrib import admin
from .models import MyModel
admin.site.register(MyModel)
Этого должно быть достаточно. Если вы планируете больше возиться с админкой сайта, я рекомендую следующее ( подробнее здесь). В принципе, это то же самое, что и выше, но позволяет в дальнейшем больше настраивать:
# admin.py
from django.contrib import admin
from .models import MyModel
class MyModelAdmin(admin.ModelAdmin):
pass
admin.site.register(MyModel, MyModelAdmin)
Третье: По умолчанию каждый суперпользователь (User.is_superuser == True
) обладает всеми правами! Это означает, что суперпользователь может получить доступ к сайту администратора и увидеть все ваши зарегистрированные модели (скорее всего, включая пользователей и группы).
По умолчанию каждый штатный пользователь (User.is_staff == True
) НЕ имеет всех прав! Он не имеет никаких прав, но может получить доступ к сайту администратора. Вы хотите дать этому пользователю только права на чтение, запись, удаление и изменение MyModel
. Это можно сделать с помощью суперпользователя и панели администратора или с помощью кода при создании пользователя.
Четвертое: Убедитесь, что ваш пользовательский шаблон (list-aprovals.html) расширяет base_site.
<!-- list-aprovals.html -->
{% extends "admin/base_site.html" %}
{% block content %}
<!-- Your custom content here -->
{% endblock %}
Это придаст вашему сайту вид сайта администратора. Очевидно, что теперь логика не обрабатывается, какие модели отображаются, а какие нет. Это, вероятно, довольно тяжелая логика для перестройки, поэтому я бы вообще пересмотрел написание такого пользовательского шаблона. Если вам нужно переделать его, я бы скопировал стандартный index_template и работал бы оттуда