{"id":5907,"library":"django-jazzmin","title":"Django Jazzmin","description":"Django Jazzmin is a drop-in theme for the Django admin interface, leveraging AdminLTE 3.2 and Bootstrap 5 to provide a modern and highly customizable user experience. It offers numerous features including customisable menus, various change form templates, Bootstrap 5 modals, and a built-in UI customizer. The project is actively maintained, with frequent releases addressing bug fixes and introducing new features, currently at version 3.0.4.","status":"active","version":"3.0.4","language":"en","source_language":"en","source_url":"https://github.com/farridav/django-jazzmin","tags":["django","admin","theme","bootstrap","adminlte","ui","customization"],"install":[{"cmd":"pip install django-jazzmin","lang":"bash","label":"Install latest version"}],"dependencies":[{"reason":"Core dependency for a Django application.","package":"Django","optional":false},{"reason":"Requires Python 3.10 or newer.","package":"Python","optional":false}],"imports":[{"note":"Jazzmin must be listed before `django.contrib.admin` in `INSTALLED_APPS` for the theme to apply correctly.","wrong":"INSTALLED_APPS = [\n    'django.contrib.admin',\n    'jazzmin',\n    # ... other apps\n]","symbol":"jazzmin","correct":"INSTALLED_APPS = [\n    'jazzmin',\n    'django.contrib.admin',\n    # ... other apps\n]"}],"quickstart":{"code":"# settings.py\n\nINSTALLED_APPS = [\n    'jazzmin', # Add Jazzmin here, BEFORE django.contrib.admin\n    'django.contrib.admin',\n    'django.contrib.auth',\n    'django.contrib.contenttypes',\n    'django.contrib.sessions',\n    'django.contrib.messages',\n    'django.contrib.staticfiles',\n    # Your other apps\n]\n\n# Optional: Customize Jazzmin settings\nJAZZMIN_SETTINGS = {\n    \"site_title\": \"My Custom Admin\",\n    \"site_header\": \"My Admin Dashboard\",\n    \"welcome_sign\": \"Welcome to the admin area\",\n    \"copyright\": \"My Company Ltd\",\n    \"topmenu_links\": [\n        {\"name\": \"Home\",  \"url\": \"admin:index\", \"permissions\": [\"auth.view_user\"]},\n        {\"name\": \"Support\", \"url\": \"https://github.com/farridav/django-jazzmin/issues\", \"new_window\": True},\n        {\"model\": \"auth.User\"},\n    ]\n}\n\n# Terminal\n# Run migrations and start the server\n# python manage.py migrate\n# python manage.py createsuperuser # If you don't have one\n# python manage.py runserver","lang":"python","description":"To integrate Django Jazzmin, install it via pip, then add 'jazzmin' to your `INSTALLED_APPS` in `settings.py`, ensuring it comes *before* `django.contrib.admin`. After running migrations, visit your Django admin site to see the new theme. You can extensively customize its appearance and functionality by defining a `JAZZMIN_SETTINGS` dictionary in your `settings.py` file."},"warnings":[{"fix":"Upgrade Python to 3.10+ and Django to 4.0+ before upgrading to django-jazzmin v3.0.0 or higher.","message":"Version 3.0.0 dropped official support for Python versions 3.6 & 3.7 and Django versions 2.2, 3.0 & 3.1. Ensure your project meets the new minimum requirements (Python >=3.10, Django >=4.0).","severity":"breaking","affected_versions":">=3.0.0"},{"fix":"Review custom templates and CSS/JS for Bootstrap 4 specific attributes and update them to their Bootstrap 5 equivalents. Refer to Bootstrap 5 migration guides.","message":"Version 3.0.3 migrated all templates, CSS, and JS from Bootstrap 4 to Bootstrap 5. If you have custom templates or extensive UI tweaks, these may require updates (e.g., `data-toggle` to `data-bs-toggle`, `data-dismiss` to `data-bs-dismiss`).","severity":"breaking","affected_versions":">=3.0.3"},{"fix":"Replace `JAZZMIN_UI_TWEAKS['dark_mode_theme']` with `JAZZMIN_UI_TWEAKS['default_theme_mode'] = 'light' | 'dark' | 'auto'`.","message":"The `dark_mode_theme` setting was replaced by `default_theme_mode` in v3.0.3. While it might still be treated as `default_theme_mode: 'auto'` with a deprecation warning, it's best to update your configuration.","severity":"deprecated","affected_versions":">=3.0.3"},{"fix":"Override the `admin/base.html` template to wrap the logout link in a form that submits a POST request with `{% csrf_token %}`.","message":"Logout functionality in Django Admin (especially with Django 5.0+) can sometimes fail with a 405 'Method Not Allowed' error when using Jazzmin. This is often due to the logout link being a GET request instead of a POST.","severity":"gotcha","affected_versions":">=3.0.0 (especially with Django 5.0+)"},{"fix":"Set `X_FRAME_OPTIONS = 'SAMEORIGIN'` in your Django settings to allow modals from the same origin.","message":"The 'Related Modal' feature for linked objects might be blocked by Django's Clickjacking Protection (`X_FRAME_OPTIONS`).","severity":"gotcha","affected_versions":"All versions"},{"fix":"Ensure your static file configuration (`STATIC_ROOT`, `STATICFILES_FINDERS`) is correct. If issues persist, temporarily disable problematic `JAZZMIN_UI_TWEAKS` or refer to GitHub issues for workarounds or upcoming fixes.","message":"Users have reported `collectstatic` failures and missing static files (e.g., `bootstrap.bundle.min.js.map`) after upgrading to 3.0.4, indicating potential issues with static file management.","severity":"gotcha","affected_versions":">=3.0.4"}],"env_vars":null,"last_verified":"2026-04-14T00:00:00.000Z","next_check":"2026-07-13T00:00:00.000Z"}