Live data from Hacker News

Ask HN: Why aren't Django Admin style dashboards popular in other frameworks?

news.ycombinator.com

51–60 of 86 posts

Re: Ask HN: Why aren't Django Admin style dashboards popular in other frameworks?

#51

Admin for Symfony Framework ( PHP ) https://symfony.com/bundles/EasyAdminBundle/current/index.ht... Admin for Laravel (PHP) https://nova.laravel.com/ Java Spring Boot https://docs.spring-boot-admin.com/current/getting-started.h... I think many other Frameworks have this, did you search for it?

The Spring one linked above is not really comparable to Django admin in my opinion. In particular it doesn’t integrate with your data model at all - it essentially just shows actuator endpoints.

Right, it describes itself as "Spring Boot Admin is a monitoring tool".

Re: Ask HN: Why aren't Django Admin style dashboards popular in other frameworks?

#53

Admin for Symfony Framework ( PHP ) https://symfony.com/bundles/EasyAdminBundle/current/index.ht... Admin for Laravel (PHP) https://nova.laravel.com/ Java Spring Boot https://docs.spring-boot-admin.com/current/getting-started.h... I think many other Frameworks have this, did you search for it?

Phoenix has Kaffy: https://github.com/aesmail/kaffy Super-simple to set up and it's been perfectly adequate for my app's needs so far. To answer OP's original question: Django Admin isn't a killer feature because the same kind of thing is available for most other Django-like frameworks, with the only difference being that it's usually a third party library rather than something built into the framework itself.

Being built into the framework is a big deal, though.

The problem with third-party libraries for this kind of thing is that there's no guarantee that they will be maintained in lockstep with the underlying framework.

What if they get abandoned? Or a new version of the framework comes out with new features but the third-party library takes months to add support for them?

I think this may be an aspect of Django that isn't appreciated nearly as much as it should be: batteries included means that the feature you depend on are guaranteed to be maintained and documented at the same pace as the rest of the framework.

Re: Ask HN: Why aren't Django Admin style dashboards popular in other frameworks?

#54

Can you clarify what's the "tremendous value" you're getting out of the Django admin? At Heii On-Call https://heiioncall.com/ we are using Active Admin https://activeadmin.info/ for Ruby on Rails, which seems quite similar to the Django admin. In my experience, it's mostly useful as a fairly basic read-only view of what's in the database. In Rails, it's so easy to whip together a custom view that we tend to do that,…

The value in the Django admin is much more about data entry than purely read-only data access.

Re: Ask HN: Why aren't Django Admin style dashboards popular in other frameworks?

#55

Mostly because it is dangerous (or was). For example, an integer that can only be 1, 2, or 3. In the admin (way back in the day, at least), someone could go into the admin and set it to 4. Which would then break everything in subtle ways. Also, most applications have constraints like "X can only be 2 if and only if Y is equal to Z" ... there was no way to specify that constraint to the admin interface, so someone cou…

This is very out-of-date. Easily adding validation has been a key benefit of the Django admin for more than a decade at this point.

(You still have to do the work, but if people are breaking things through the admin that's your fault.)

Re: Ask HN: Why aren't Django Admin style dashboards popular in other frameworks?

#56

Admin for Symfony Framework ( PHP ) https://symfony.com/bundles/EasyAdminBundle/current/index.ht... Admin for Laravel (PHP) https://nova.laravel.com/ Java Spring Boot https://docs.spring-boot-admin.com/current/getting-started.h... I think many other Frameworks have this, did you search for it?

Filament is better and free, for Laravel

Re: Ask HN: Why aren't Django Admin style dashboards popular in other frameworks?

#57
It's probably a combination of things.

The Django Admin existed before Django publicly existed. That meant that once anyone started using Django they knew that they should constrain their use of Django in certain ways so that the Django Admin would work with their usage. Features that would be added to Django would be built with the Django Admin in mind.

Many tools like Flask or FastAPI don't have an opinionated model layer like Django. Without that, you can't really create an admin interface programatically. People could be storing their data in any sort of fashion anywhere. How would one build an admin system for something like Flask or FastAPI where there's no convention around how people set up data access? A lot of frameworks out there don't tell you "access your data in this way" or "this is how users will be authenticated." Without those two things, it's hard to really create an admin system.

There are similar systems available for some frameworks, but since they aren't part of the core framework, they don't get the same attention. Someone creates it, but it doesn't have the kind of community buy-in that sustains it. One of the odd things about Django is that the admin system is under `django.contrib` which indicated that they didn't intend for it to be in the core of Django forever, but that's not really how `django.contrib` ended up. It continued to be a core part of Django maintained as part of the framework.

Like I said, there are admin dashboards available in other frameworks like RailsAdmin (https://github.com/railsadminteam/rails_admin) or Core Admin for .NET (https://github.com/edandersen/core-admin) and I'm sure there's more. However, both Rails and .NET provide most of what Django provides (and a lot more than most frameworks). Rails and .NET both have a default data access ORM that a majority of people using those frameworks tend to use. .NET has built-in authentication/authorization so the admin can work off that. Rails doesn't have auth, but RailsAdmin uses some plugins.

There's even Flask-Admin: https://flask-admin.readthedocs.io/en/latest/. However, if you start reading through the docs you start seeing that you have to solve more than just dropping it in. How do you do auth and permissions? Have you used SQLAlchemy, MongoEngine, PeeWee, or PyMango to access your data? No? Well, you might need to write a way for it to actually figure out your data. Because Flask apps aren't generally written with Flask-Admin in mind and because Flask doesn't offer a default path for things like models and auth, it becomes a harder and more varied task to create a generic admin system.

Re: Ask HN: Why aren't Django Admin style dashboards popular in other frameworks?

#58
post #57

It's probably a combination of things. The Django Admin existed before Django publicly existed. That meant that once anyone started using Django they knew that they should constrain their use of Django in certain ways so that the Django Admin would work with their usage. Features that would be added to Django would be built with the Django Admin in mind. Many tools like Flask or FastAPI don't have an opinionated mode…

I'm trying to figure this out, or understand if this is moment to try and do something about it. This seems like such a common use-case but the offerings across frameworks are all fragmented and sad. We're at a scale now where Django Admin is creaking and the lack of extensibility is killing us - for example, we'd love to build actions that work based on specific form inputs rather than just the standard atomic bulk actions that Django Admin supports. We've tried some experiments to do this and it's rapidly looking like doing this at any kind of scale is going to turn us to mud.

While I was looking for something for us to upgrade off of Django admin to, it seems like the main presence here is something like ReTool or Airplane.dev. The common consensus in these tools seems to be that the way to build admin dashboards in a framework-agnostic way is to build drag'n'drop interfaces and then have lots of little individually deployable scripts which run SQL queries.

This seems like such a sad state of affairs. Do you know of any tools that are able to cope with data storage agnosticism in a way that feels more like software engineering?

Re: Ask HN: Why aren't Django Admin style dashboards popular in other frameworks?

#59

I've been out of web development for about four years now, but I think Django is unusual in providing the admin dashboard for free. Most frameworks don't want to devote the resources to that when there are third-party options you can fairly easily (ha ha) bolt on to your project. Speculatively, it may be that Django comes from a time before such a wide variety of self-service solutions existed, and based on the newsp…

What third party options would you recommend? I'm aware of ReTool and Airplane.dev, but both of them feel like I'm a technician fighting an interface and not a software engineer writing functionality.

Re: Ask HN: Why aren't Django Admin style dashboards popular in other frameworks?

#60
post #36

I've been out of web development for about four years now, but I think Django is unusual in providing the admin dashboard for free. Most frameworks don't want to devote the resources to that when there are third-party options you can fairly easily (ha ha) bolt on to your project. Speculatively, it may be that Django comes from a time before such a wide variety of self-service solutions existed, and based on the newsp…

We originally created Django as a CMS for some newspaper websites. We didn't even think of it as a framework - we called it "the CMS" for the first ~10 months that we were working on it. https://simonwillison.net/2010/Aug/24/what-is-the-history/

I'm curious how you think about Django's CMS capabilities compared to less opinionated languages and frameworks. Do you think the fact that Django is so opinionated is necessary for Django to be as good as it is? If Django was built more like FastAPI could something like Django Admin still work? Is Django Admin special because of the execution, or because of the capabilities that the design of Django enables it to have?
Post reply on HN