/django-jet

Django-4 compatible version of django-jet. Modern responsive template for the Django admin interface with improved functionality.

Primary LanguagePythonGNU Affero General Public License v3.0AGPL-3.0

Django JET (Django-4 compatible)

https://travis-ci.org/geex-arts/django-jet.svg?branch=master

Modern template for Django-4 admin interface with improved functionality

Django JET has two kinds of licenses: open-source (AGPLv3) and commercial. Please note that using AGPLv3 code in your programs make them AGPL compatible too. So if you don't want to comply with that we can provide you a commercial license (visit Home page). The commercial license is designed for using Django JET in commercial products and applications without the provisions of the AGPLv3.

Logo

Why Django JET?

  • New fresh look
  • Responsive mobile interface
  • Useful admin home page
  • Minimal template overriding
  • Easy integration
  • Themes support
  • Autocompletion
  • Handy controls

Screenshots

Screenshot #1 Screenshot #2 Screenshot #3

Installation

  • Download and install the Django3 compatible version of Django JET:
pip install https://github.com/Barukimang/django-jet/archive/dev.zip
# or
easy_install https://github.com/Barukimang/django-jet/archive/dev.zip
  • Add 'jet' application to the INSTALLED_APPS setting of your Django project settings.py file (note it should be before 'django.contrib.admin'):
INSTALLED_APPS = (
    ...
    'jet',
    'django.contrib.admin',
)
  • Make sure django.template.context_processors.request context processor is enabled in settings.py (Django 1.8+ way):
TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [],
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                ...
                'django.template.context_processors.request',
                ...
            ],
        },
    },
]

Warning

Before Django 1.8 you should specify context processors different way. Also use django.core.context_processors.request instead of django.template.context_processors.request.

from django.conf import global_settings

TEMPLATE_CONTEXT_PROCESSORS = global_settings.TEMPLATE_CONTEXT_PROCESSORS + (
    'django.core.context_processors.request',
)
  • Add URL-pattern to the urlpatterns of your Django project urls.py file (they are needed for related–lookups and autocompletes):
urlpatterns [
    '',
    path('jet/', include('jet.urls', 'jet')),  # Django JET URLS
    path('admin/', include(admin.site.urls)),
    ...
]
  • Create database tables:
python manage.py migrate jet
# or
python manage.py syncdb
  • Collect static if you are in production environment:
python manage.py collectstatic
  • Clear your browser cache

Dashboard installation

Note

Dashboard is located into a separate application. So after a typical JET installation it won't be active. To enable dashboard application follow these steps:

  • Add 'jet.dashboard' application to the INSTALLED_APPS setting of your Django project settings.py file (note it should be before 'jet'):
INSTALLED_APPS = (
    ...
    'jet.dashboard',
    'jet',
    'django.contrib.admin',
    ...
)
  • Add URL-pattern to the urlpatterns of your Django project urls.py file (they are needed for related–lookups and autocompletes):
urlpatterns [
    '',
    path('jet/', include('jet.urls', 'jet')),  # Django JET URLS
    path('jet/dashboard/', include('jet.dashboard.urls', 'jet-dashboard')),  # Django JET dashboard URLS
    path('admin/', include(admin.site.urls)),
    ...
]

Warning

From Django 3.0 the default value of the X_FRAME_OPTIONS setting was changed from SAMEORIGIN to DENY. This can cause errors for popups such as for the Field Lookup Popup. To solve this you should add the following to your Django project settings.py file:

X_FRAME_OPTIONS = 'SAMEORIGIN'
  • For Google Analytics widgets only install python package:
pip install google-api-python-client==1.4.1
  • Create database tables:
python manage.py migrate dashboard
# or
python manage.py syncdb
  • Collect static if you are in production environment:
python manage.py collectstatic