Hacker News new | ask | show | jobs
by bradleyg_ 4290 days ago
I still really like main website, the admin site however could do with a total overhaul in my opinion.

I normally use http://djangosuit.com or http://grappelliproject.com but would be nice to have something good by default.

1 comments

Those strike me more as reskinnings than total overhauls.

The thing about the Django admin interface is that it is very, very generic. This is the source of its power, but also the source of the problem when it comes to styling it. There's nothing to get any design traction on, because all changes have to simultaneously work on just about everything. It's a really potent example of how "generic" and "featureful" are often in direct conflict with each other.

That is to say, not that the Django admin app doesn't have features. It does, it's quite good and useful and a great generic default. But as you start trying to add more, the genericness fights you pretty hard. Django's admin interface hasn't changed because it pretty much hit the local Pareto optima that many years ago.

(And over the years, I'm developing an instinctive twitch whenever my coworkers describe something as "generic". The Django interface is one of the good exceptions, but in general I'm starting to automatically substitute "generic" with "doesn't do anything". It works better than it should.)

I don't know about generic, it's not that extensible, it can be a pain when you want to write widgets outside of what it does.

The same is true about other parts of Django. It's still quick to get things running, and there is a great ecosystem.

[EDIT] Grapelli is a great example of how not-extensible the admin is - to do something that should just be a reskin, they have to copy large parts of the admin code and then adapt it.

The admin should be built in a way so that something like grapelli is just a some new CSS. [/EDIT]

Grapelli chose not to stick to pure CSS. It's not a trade-off I think was worth it as they have no cut themselves off from much of the 3rd party admin extension ecosystem - unless those apps actively do a 'Grapelli version'

Pure CSS skins are a bit more work and you occasionally have to choose between overriding more template code than you'd like - or doing a sneak bit of jQuery DOM manipulation - but it's a better bet long term.

A really simple fix for the core Django team would be to add a heap of {% block %} tags into admin templates so that we can selectively inherit and override.