An admin "redesign"?

This has been on my mind for a while. The last (only?) admin redesign was over 6 years ago now. Quite a lot has changed in that time, not least of which Django’s dropping support for legacy browsers. The current design is functional, and certainly a step up from the one before that didn’t work on smaller devices, but my opinion is growing that it could use a refresh.

The main problem I have when changing admin CSS is that it’s a bit of a hodgepodge. Most of the layout is using float for aligning, but much of the more recently added code is using flexbox instead. Sometimes I’ll come across a float: left in the CSS or a clear class in the HTML that apparently changes nothing if you remove it – but I’m still cautious of doing it in case it affects some particular edge case.

Another issue is that the admin’s HTML can be hard to read. With this type of alignment you often need extra elements for wrappers and so on, and having a lot of nested, unsemantic tags can be hard to visually navigate.

On the more user facing side, while we’ve made some positive changes for accessibility, the existing colour scheme makes getting a really good contrast very difficult. The font size for regular text is too small already, making anything that needs be visually “dimmed” by making the text smaller or the text dimmer makes that text difficult to read (e.g., recent actions, timezone text for datetime fields). With that said, it’s important to give users a choice here, as having a smaller font size can increase productivity (more stuff fits on a single page).

While I like (and prefer, and use) the recently added dark theme, it does seem a bit on the ugly side, with the colours adapted from the light theme colours rather than thought up from scratch. It doesn’t feel as… I don’t know, comforting as other dark themes I see, it feels a little harsh, somehow. The design as a whole is starting to feel a little dated to me.

I’m interested in knowing if there’s any appetite for this, or is it just me?

What I’m proposing, roughly, is to redesign the admin using CSS Grid, more semantic HTML and better accessibility. It shouldn’t need (m)any JS changes, but probably the majority of the HTML and CSS would be rewritten, which is a lot of work, and moreover something that could quite easily cause bugs, and will be backwards incompatible for anyone extending templates. So it’s ideally something we’d not do too often. But I am wondering if the time is about right.

Edit: I remembered there was an earlier thread on this: Modernizing the look and feel of admin - though it didn’t get much attention, and this is a bit more of a proposal.

1 Like

I still didn’t get used to the new design and you want to change it again? :smiley: Joking aside, I guess a full redesign would be okay – a lot has changed wrt HTML etc. Do you think you would need to touch views? If not I think this app could be written as 3rd party app first and then merged back if people like it.

We do not have a very hard stance on backwards compat for contrib apps, but I think that even if we change templates etc we could move the existing admin templates & css into a 3rd party app that people requiring the old structure could use for a while?

I had this exact thought actually. My feeling is it wouldn’t need to touch the views at all (and I’d hope not as they’re rather scary to look at in places) so it could be done as an app as a proof of concept. I just didn’t want to embark on such a big journey without knowing if anyone wants it.

My only concern really with doing this way is that - not being a fork - it’d be more difficult to integrate changes from Django back into it, but hopefully not a huge problem.

I’m curious, why would that be true?

If you create the css files in the same directory structure in an app, Django would find your versions of the css files instead of the defaults. Wouldn’t that let you incrementally test changes by editing your versions instead of the system-provided versions?
Then you would be able to create a diff between them for subsequent integration.

(Or am I missing something?)

I’d like to see such improvements. The admin is one of Django’s selling points so keeping it up to date helps keep Django relevant. I also agree that the small text is a problem.

I believe Tom also wants to make HTML changes, which would mean templates and potentially form widgets. So a bunch of moving pieces.

1 Like

Now I feel like I’m missing something :smiley:

I actually thought I’d get a reasonable diff out of the templates - my thought at the moment is I’d mostly just be removing unnecessary elements/classes/etc. My concern was more for the CSS as it’d probably be written from scratch or appear as though it has been. But after sleeping on it I don’t think missing upstream CSS changes would matter much for a redesign anyway.

I guess I won’t know until I start doing it though, so I suppose I’ll just make a start and see where my motivation intersects with how how annoying it ends up being :slight_smile:


I’d be happy to see modern templates for the admin for sure. I think you are not the only one who thinks the admin look is dated.