Django admin needs a skip link
Skip links are a very common pattern to help keyboard go straight to a page’s main content. They aren’t technically a requirement to meet accessibility standards, but they’re recommended as nice-to-have way to help with issues such as those targeted by WCAG SC 2.4.1: Bypass Blocks.
I think the Django admin should have a skip link on all of its pages, so keyboard users can bypass:
- The header area
- The sidebar
Here is a simple example to illustrate the problem – it currently takes 32 tab stops to reach the page’s main content on my demo site:

With a skip link, this is reduced to 2 tab stops (and one press of Enter to navigate):

Change History
(18)
Description: |
modified (diff)
|
Triage Stage: |
Unreviewed → Accepted
|
Owner: |
changed from nobody to Fabian Jarrett
|
Status: |
new → assigned
|
Owner: |
Fabian Jarrett removed
|
Status: |
assigned → new
|
Owner: |
set to Marcelo Galigniana
|
Status: |
new → assigned
|
Has patch: |
set
|
Patch needs improvement: |
set
|
Patch needs improvement: |
unset
|
Patch needs improvement: |
set
|
Patch needs improvement: |
unset
|
Patch needs improvement: |
set
|
Patch needs improvement: |
unset
|
Triage Stage: |
Accepted → Ready for checkin
|
Resolution: |
→ fixed
|
Status: |
assigned → closed
|
Here are reference acceptance criteria for a skip link, if someone is interested in giving this a shot, as well as a reference implementation, from MagentaA11y:
For Django in particular,