A beautiful, modern, fully redesigned Django admin template with RTL support, theming, and offline assets.
Project description
Django Simorgh
A beautiful, modern, fully redesigned Django admin interface.
Django Simorgh replaces the default Django admin UI with a complete custom design: dark sidebar, collapsible app groups, responsive tables, modern forms, RTL layout, 9 color themes, light/dark mode, and all assets bundled — no CDN required.
Features
- Sidebar navigation with app groups and model sub-items
- Top navbar with user profile dropdown and dark mode toggle
- Configurable icons for apps and models (Font Awesome 6 Free)
- 9 color themes: green, blue, red, yellow, black, purple, orange, pink, navy
- Light and dark mode — auto-detected from OS preference, toggle-able, persisted
- RTL support — layout direction follows Django's
LANGUAGE_BIDI; the browser automatically applies Vazirmatn for Arabic/Persian text and Sniglet for Latin text via CSSunicode-range - Modern filters panel — clean, compact, visually consistent with the theme
- Responsive tables with hover effects and row selection
- Modern forms with clean fieldsets and styled inputs
- Fully offline — Font Awesome, Vazirmatn, and Sniglet are bundled in the package
- Configurable branding — custom logo and favicon via settings
- Production-ready pip package
Installation
pip install django-simorgh
Django Configuration
1. Add to INSTALLED_APPS
django_simorgh must appear before your project apps and before django.contrib.admin so its custom model Meta options are registered before models are imported:
INSTALLED_APPS = [
"django_simorgh", # ← MUST be before django.contrib.admin
"django.contrib.admin",
"django.contrib.auth",
"django.contrib.contenttypes",
"django.contrib.sessions",
"django.contrib.messages",
"django.contrib.staticfiles",
# ... your apps
]
2. Add context processor
TEMPLATES = [
{
"BACKEND": "django.template.backends.django.DjangoTemplates",
"DIRS": [],
"APP_DIRS": True,
"OPTIONS": {
"context_processors": [
"django.template.context_processors.debug",
"django.template.context_processors.request", # required
"django.contrib.auth.context_processors.auth",
"django.contrib.messages.context_processors.messages",
"django_simorgh.context_processors.simorgh_context", # ← add this
],
},
},
]
3. Collect static files
python manage.py collectstatic
That's it. All fonts and icons are bundled — no external CDN calls needed.
Theme Color Configuration
# settings.py
DJANGO_ADMIN_THEME_COLOR = "green" # default
Available values: green, blue, red, yellow, black, purple, orange, pink, navy
Branding, Logo, and Favicon Configuration
DJANGO_ADMIN_SITE_HEADER = "My Admin Panel" # default: "Simorgh Admin"
DJANGO_ADMIN_LOGO = "path/to/logo.png"
DJANGO_ADMIN_FAVICON = "path/to/favicon.ico"
If logo or favicon are not set, the bundled default assets are used automatically.
Model Icon Configuration
Option 1 — Model Meta (recommended)
from django.db import models
class Product(models.Model):
name = models.CharField(max_length=120)
class Meta:
simorgh_icon = "fa-solid fa-box"
simorgh_app_icon = "fa-solid fa-store"
simorgh_icon controls the model icon. simorgh_app_icon can be defined on any model in the app and controls the sidebar app-group icon.
Because these are custom Django Meta options, keep django_simorgh before your own apps in INSTALLED_APPS.
Option 2 — Per-ModelAdmin
from django.contrib import admin
from .models import Product
@admin.register(Product)
class ProductAdmin(admin.ModelAdmin):
icon = "fa-solid fa-box" # any Font Awesome 6 Free class string
Option 3 — Via settings
DJANGO_ADMIN_ICONS = {
"shop": {
"_app_icon": "fa-solid fa-store", # icon for the app group in the sidebar
"Product": "fa-solid fa-box",
"Category": "fa-solid fa-tag",
"Order": "fa-solid fa-receipt",
},
"auth": {
"_app_icon": "fa-solid fa-shield-halved",
"User": "fa-solid fa-user",
"Group": "fa-solid fa-users",
},
}
Keys: app_label (outer), ModelName / _app_icon (inner).
Resolution order:
- Model
Meta.simorgh_icon ModelAdmin.iconattributeDJANGO_ADMIN_ICONSsettings dict- Built-in defaults for
auth,admin,contenttypes, etc. - Generic fallback
fa-solid fa-circle-dot
Bundled Assets
All external assets are included in the package and served from your own static files after collectstatic. No CDN requests are made at runtime.
| Asset | License |
|---|---|
| Font Awesome 6 Free | SIL OFL 1.1 / MIT / CC BY 4.0 |
| Vazirmatn | SIL OFL 1.1 |
| Sniglet | SIL OFL 1.1 |
RTL Support
Set LANGUAGE_CODE to a RTL language and Django's LANGUAGE_BIDI will be True automatically. The template uses this to set dir="rtl" on the <html> element, which flips the sidebar, navbar, and tables.
Font selection is handled entirely by CSS unicode-range — no settings needed:
- Latin/English characters → Sniglet
- Arabic/Persian characters → Vazirmatn
LANGUAGE_CODE = "fa-ir" # RTL layout + correct fonts — no extra config needed
Screenshots
Screenshots will be added after first public release.
| Dashboard | Change List | Change Form |
|---|---|---|
Development Setup
git clone https://github.com/username/django-simorgh
cd django-simorgh
python -m venv .venv
source .venv/bin/activate
pip install django
Create a minimal test project:
# testproject/settings.py
import sys, pathlib
sys.path.insert(0, str(pathlib.Path(__file__).parents[2]))
INSTALLED_APPS = [
"django_simorgh",
"django.contrib.admin",
...
]
Build and Publish
pip install build twine
python -m build
twine upload --repository testpypi dist/* # test first
twine upload dist/* # publish to PyPI
License
MIT — see LICENSE for details.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file django_simorgh-1.0.0.tar.gz.
File metadata
- Download URL: django_simorgh-1.0.0.tar.gz
- Upload date:
- Size: 654.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c87d89e92af7f99abe3455664b379b47ec50de9b617286a3935cdc8ff98ab935
|
|
| MD5 |
3aba4091e4d08931f5cf7938ebae447e
|
|
| BLAKE2b-256 |
fe912506b2a98b6eedb84113996c48226a2fd322d6b9209278086172977b3f3a
|
File details
Details for the file django_simorgh-1.0.0-py3-none-any.whl.
File metadata
- Download URL: django_simorgh-1.0.0-py3-none-any.whl
- Upload date:
- Size: 656.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e5f4a6cc739b7bbb49f24d400683e2029c40ab8cf56b0a5816484e5c33fcee26
|
|
| MD5 |
2444e5188c3248c05658461b36d5f65a
|
|
| BLAKE2b-256 |
e307ebe17a7909a6b8196c3084ce095725388003e5be6bc09b8b2952c3a3d2d5
|