Package: django-theme-academy
django-theme-academydjango-theme-academyprovides the Academy theme for Django websites and applications.  Academy provides the following features:Built with Tabler, and Bootstrap 5A fixed left sidebar with configurable logoBreadcrumbsA footer with contact information for your organiizationIncludesdjango-wildewidgetssupportInstallationdjango-theme-academysupports Python 3.7+, and Django 3+.To install from PyPI:pipinstalldjango-theme-academyUpdate settings.pyRegister the module inINSTALLED_APPS:INSTALLED_APPS=[...'academy_theme',...]Add the custom template context processor:TEMPLATES=[{'BACKEND':'django.template.backends.django.DjangoTemplates','OPTIONS':{...'context_processors':[...'academy_theme.context_processors.theme',...],},},]Optionally configure the theme specific settings.  You don't need to define all of these, but instead
only the ones you wish to override:ACADEMY_THEME_SETTINGS={# Header'APPLE_TOUCH_ICON':'myapp/images/apple-touch-icon.png','FAVICON_32':'myapp/images/favicon-32x32.png','FAVICON_16':'myapp/images/favicon-16x16.png','FAVICON':'myapp/images/favicon.ico','SITE_WEBMANIFEST':'myapp/images/site.webmanifest',# Footer'ORGANIZATION_LINK':'https://myorg.com','ORGANIZATION_NAME':'Organization Name','ORGANIZATION_ADDRESS':'Organization Address','COPYRIGHT_ORGANIZATION':'Copyright Organization''FOOTER_LINKS':[]}Choose a base.hmldjango-theme-academyships with two different base templates:academy_theme/base.html, for regular Django template developmentacademy_theme/base--wildewidgets.html, fordjango-wildewidgetsbased Django developmentbase.htmlTo useacademy_theme/base.html, create your ownbase.htmlthat extends it
and overrides its blocks as needed.  Example:{% extends 'academy_theme/base.html' %}
{% load static academy_theme i18n %}

{% block title %}{% trans 'My App Title' %}{% endblock %}

{% block extra_css %}<linkrel="stylesheet"href="{% static 'myapp/css/styles.css' %}">{% endblock %}

{% block extra_header_js %}<scriptsrc="{% static 'myapp/js/app.js %}"></script>{% endblock %}

{% block menu %}<navclass="navbar navbar-vertical navbar-expand-lg navbar-dark"><divclass="container-lg ms-0"><aclass="navbar-brand"href="#"><imgsrc="{% static 'myapp/images/logo.png' %} alt="MyApp"width="100%"></a><buttonclass="navbar-toggler"type="button"data-bs-toggle="collapse"data-bs-target="#navbarSupportedContentV_9628"aria-controls="navbarSupportedContent"aria-expanded="false"aria-label="Toggle navigation"><spanclass="navbar-toggler-icon"></span></button><divclass="collapse navbar-collapse"id="navbarSupportedContent"><ulclass="navbar-nav me-1"><liclass="nav-item"><aclass="nav-link"href="/">Home</a></li></ul></div></div></nav>{% endblock %}

{% block breadcrumbs %}<olclass="breadcrumb">{% block breadcrumb-items %}
        {% breadcrumb 'Home' 'myapp:home' %}
    {% endblock %}</ol>{% endblock %}base-wildewidgets.htmlIf you don't need to add any Javascript or CSS, this can be used directly in
yourdjango-wildewidgetsbased views, like so:fromtypingimportList,Tuple,Typefromacademy_theme.wildewidgetsimportAcademyThemeMainMenufromdjango.templatetags.staticimportstaticfromwildewidgetsimport(BasicMenu,BreadcrumbBlockCardWidget,MenuMixin,StandardWidgetMixin,WidgetListLayout)classMainMenu(AcademyThemeMainMenu):brand_image:str=static("myapp/images/logo.png")brand_text:str="My App"items:List[Tuple[str,str]]=[('Home','myapp:home'),]classBaseBreadcrumbs(BreadcrumbBlock):def__init__(self,*args,**kwargs):super().__init__(*args,**kwargs)self.add_breadcrumb('Home',reverse('myapp:home'))classWildewidgetsView(MenuMixin,StandardWidgetMixin,TemplateView):template_name:str="academy_theme/base--wildewidgets.html"menu_class:Type[BasicMenu]=MainMenumenu_item:str="Home"defget_content(self)->WidgetListLayout:layout=WidgetListLayout("Wildewidgets Example")layout.add_widget(CardWidget(card_title='My Card',widget='Here is my card body',),title='My Card',icon='info-square')returnlayoutdefget_breadcrumbs(self)->BreadcrumbBlock:breadcrumbs=BaseBreadcrumbs()breadcrumbs.add_breadcrumb('Wildewidgets')returnbreadcrumbsIf you do need to add Javascript or CSS, create your ownbase--wildewidgets.htmlthat extends theacadmey_themeone and and overrides its blocks as needed.  Example:{% extends 'academy_theme/base--wildewidgets.html' %}
{% load static %}

{% block extra_css %}<linkrel="stylesheet"href="{% static 'myapp/css/styles.css' %}">{% endblock %}

{% block extra_header_js %}<scriptsrc="{% static 'myapp/js/app.js %}"></script>{% endblock %}