Skip to main content

Keyboard shortcuts for Django Admin

Project description

django-admin-keyshortcuts

A Django package that adds keyboard shortcuts to the Django Admin interface for improved accessibility.

Demo

A static preview of Django Admin with Keyboard Shortcuts is available at:
https://khanxmetu.github.io/django-admin-keyshortcuts-demo/

Setup

Install from pip:
pip install django-admin-keyshortcuts

then add django_admin_keyshortcuts before django.contrib.admin in your INSTALLED_APPS:

INSTALLED_APPS = (
    ...,
    'django_admin_keyshortcuts',
    'django.contrib.admin', 
    ...,
)

Usage

The following is a list of supported shortcuts

Description Shortcut (Windows/Linux) Shortcut (MacOS) Scope
Show shortcuts help dialog ? ? Global
Go to the site index g i g i Global
Toggle sidebar [ [ Global (where it exists)
Select previous row for action k k Change List
Select next row for action j j Change List
Toggle row selection x x Change List
Focus actions dropdown a a Change List
Focus search field / / Change List
Save and go to change list Ctrl+s ⌘+s Change Form
Save and add another Ctrl+Shift+S ⌘+Shift+S Change Form
Save and continue editing Ctrl+Alt+s ⌘+⌥+s Change Form
Delete Alt+d ⌥+d Change Form
Confirm deletion Alt+y ⌥+y Delete Confirmation
Cancel deletion Alt+n ⌥+n Delete Confirmation

Adding Custom Shortcuts

This package uses the GitHub Hotkey library for handling shortcuts. You can add new ones by extending templates:

  1. In the admin template, locate the element you want triggered by the shortcut.
  2. Extend the template and add data-hotkey attribute to the target element, e.g. data-hotkey="Mod+s". See hotkey string format for supported modifier and key combinations.
  3. Document the shortcut in the help dialog.

View-specific (per page) shortcuts: Extend change_list_shortcuts, change_form_shortcuts, or delete_confirmation_shortcuts.
Example:

{% extends "admin/change_list_shortcuts.html" %}
{% load shortcuts %}
{% block extra_shortcuts %}
{{ block.super }}
  <section>
    <h3>Custom Shortcuts</h3>
    <dl>
        <dt class="shortcut-description">A Custom Shortcut</dt>
        <dd class="shortcut-keys">{% shortcut_format_kbd "Mod+s" %}</dd>
    </dl>
</section>
{% endblock %}

Global shortcuts:
Example:

{% extends "admin/shortcuts.html" %}
{% load shortcuts %}
{% block global_shortcuts %}
  {{ block.super }}
  <section>
    <h3>Custom Shortcuts</h3>
    <dl>
      <dt class="shortcut-description">A Custom Shortcut</dt>
      <dd class="shortcut-keys">{% shortcut_format_kbd "Mod+S" %}</dd>
    </dl>
  </section>
{% endblock %}

Tip: Use the Mod key (⌘ on macOS, Ctrl on Windows/Linux). It ensures shortcuts are OS-independent and automatically map to the correct key per platform.

About

The django-admin-keyshortcuts package is being developed with the goal of eventually merging its functionality into Django core.
This package has been undergoing refinements with respect to GSoC 2025: Keyboard Shortcuts Specification

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

django_admin_keyshortcuts-0.2.2.tar.gz (10.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

django_admin_keyshortcuts-0.2.2-py3-none-any.whl (18.9 kB view details)

Uploaded Python 3

File details

Details for the file django_admin_keyshortcuts-0.2.2.tar.gz.

File metadata

File hashes

Hashes for django_admin_keyshortcuts-0.2.2.tar.gz
Algorithm Hash digest
SHA256 f008f98664b24efe1a55e549377c52c6235cc90f206d1f0dc453f70278428255
MD5 5b499d03f3bc9e10d1294c9a686c91dd
BLAKE2b-256 9dd7c85b36a9fd0e7c9107f55e66bc27052c8f70aa9053b523d9494318214713

See more details on using hashes here.

File details

Details for the file django_admin_keyshortcuts-0.2.2-py3-none-any.whl.

File metadata

File hashes

Hashes for django_admin_keyshortcuts-0.2.2-py3-none-any.whl
Algorithm Hash digest
SHA256 b841c9c0750c898fb689abbfe1eecf4f0e4c2d67854b10e36b529416074196a3
MD5 501a523fa8b1b0d186da005a9c2bf97f
BLAKE2b-256 2c494b41620abe165b318d4453dada421a0f977613f6c195c5c66ed81f3085ab

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page