Динамическая настройка вашего сайта на основе таблицы django_admin_settings_options
.
Поддерживаемые опции:
Эти опции находятся в вашей базе данных, названной django_admin_settings_options
, после выполнения миграций.
Вы также можете добавить свои собственные опции в эту таблицу и использовать их с помощью шаблонных тегов adminlte_options
и функции get_adminlte_option
.
Таблица опций имеет поле действительности для контроля работы ваших опций.
Пример:
# adminlte/general_option.html
{% load adminlte_options %}
# Здесь имя моего опции site_title, вы можете настроить его самостоятельно.
{% get_adminlte_option 'site_title' as adminlte_site_title %}
{% if adminlte_site_title.valid %}
{{ adminlte_site_title.site_title }}
{% else %}
{{ site_title|default:_('Django site admin') }}
{% endif %}
Перед созданием своих опций, вам следует знать, какие опции использует adminlte.
# adminlte/admin.py
class ModelAdmin(admin.ModelAdmin):
select2_list_filter = ()
search_field_placeholder = ''
class Media:
css = {
"all": ("admin/components/select2/dist/css/select2.min.css",)
}
js = (
"admin/components/select2/dist/js/select2.min.js",
)
def changelist_view(self, request, extra_context=None):
view = super().changelist_view(request, extra_context)
cl = view.context_data.get('cl')
cl.search_field_placeholder = self.search_field_placeholder
filter_specs = cl.filter_specs
``` for index, filter_spec in enumerate(filter_specs):
if filter_spec.field_path in self.select2_list_filter:
# флаг для использования Select2
filter_spec.display_select2 = True
cl.filter_specs[index] = filter_spec
view.context_data['cl'] = cl
return view
С версии v1.5.0b0 вам больше не требуется модифицировать новый шаблон для активации Select2.
Пример:
# adminlte/admin.py
@admin.register(Menu)
class MenuAdmin(TreeAdmin):
...
# change_form_template = 'adminlte/menu_change_form.html'
formfield_overrides = {
models.ForeignKey: {'widget': AdminlteSelect}
}
```# adminlte/menu_change_form.html
# активация целевого селекта
# {% extends 'admin/change_form.html' %}
# {% block extrajs %}
# {{ block.super }}
# <script>
# django.jQuery('#id_content_type').select2();
# </script>
# {% endblock %}
Эффект:
Начиная с версии v1.5.0b0 вам больше не требуется модифицировать новый шаблон для активации Select2.
Пример:
# adminlte/admin.py
@admin.register(Menu)
class MenuAdmin(TreeAdmin):
...
# change_form_template = 'adminlte/menu_change_form.html'
formfield_overrides = {
# множественный выбор для ManyToManyField
models.ManyToManyField: {'widget': AdminlteSelectMultiple(
attr={'style': 'width: 100%'}
)}
}
# adminlte/menu_change_form.html
# активация целевого селекта
# {% extends 'admin/change_form.html' %}
#
# {% block extrajs %}
# {{ block.super }}
# <script>
# django.jQuery('#id_content_type').select2();
# </script>
# {% endblock %}
Эффект:
Настройте свое меню в зависимости от базы данных и библиотеки TreeBeard.глубина 2
, более глубинные уровни пока недействительны.
Обменять меню путем нажатия кнопки "Обменять меню"
слева
admin:index
: имя django url, рекомендовано./admin/
: внутренний django url, если вы используете i18n url, это не лучший вариант.http://
: внешняя ссылкаapp_label:model
в content_type, он будет пропущен.Чем больше число, тем выше приоритет
.╰─$ python manage.py shell
Python 3.6.6 (default, Sep 29 2018, 19:18:41)
Type 'copyright', 'credits' or 'license' for more information
IPython 7.5.0 -- An enhanced Interactive Python. Type '?' for help.
In [1]: from django.urls import resolve
```In [2]: resolve('/ru/admin/video/parsed/')
Out[2]: ResolverMatch(func=django.contrib.admin.options.changelist_view, args=(), kwargs={},
url_name=video_parsed_changelist, app_names=['admin'], namespaces=['admin'], route=ru/admin/video/parsed/)
имя url в django = namespaces:url_name
в вашем setting.py ADMINLTE_SETTINGS
Пример демонстрационных возможностей отключения/включения
ADMINLTE_SETTINGS = {
'demo': True,
}
Отключение/включение формы поиска
ADMINLTE_SETTINGS = {
'search_form': True,
}
Выбор темы
ADMINLTE_SETTINGS = {
'skin': True,
}
Кастомное сообщение об авторском праве
ADMINLTE_SETTINGS = {
'copyright': 'Иван Петров',
}
Функционал расширенной навигации, где элементы навигации не скрываются под открываемым меню
ADMINLTE_SETTINGS = {
'navigation_expanded': True,
}
ADMINLTE_SETTINGS = {
'show_apps': ['django_admin_settings', 'auth', 'main'],
}
Основное навигационное приложение, где модели приложений располагаются в верхней части меню
ADMINLTE_SETTINGS = {
'main_navigation_app': 'django_admin_settings',
}
Модификация значков приложений и порядок приложений/моделей
ADMINLTE_SETTINGS = {
'apps': {
'example-app': {
'icon': 'fa-desktop',
'models': {
'example-model': {
'icon': 'fa-archive'
},
'example-model1': {}
}
},
'auth': {
'icon': 'fa-users'
}
}
}
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарий ( 0 )