Hacker News new | ask | show | jobs
by ralmidani 3751 days ago
Django has outgrown its humble beginnings. I am building a fairly sophisticated single-page business application using Django along with Django REST Framework, and have yet to run into a situation that made Django feel "crufty."
3 comments

So as a Scala Play dev... Trying to get the user stuff to work with email as username and still work on the admin page? Super crufty.

Overall very good docs though :)

That's not been an issue for several years (since Django 1.5(?) introduced custom user models). Drop in a custom admin form and you're done.
That is not true with current (1.9).

Drop in a custom user model and

a) Better be a brand new project at all

b) You need to muck with the user manager also

c) How do you fix up the admin module? I have yet to see a fully fixed up admin module for the custom user.

I am not a Django pro so happy to be proved wrong. But take a default app, and record all steps to make the user model work (including password reset, login, logout, admin page). If that doesn't feel crufty to you I am not sure what cruft is.

Fair enough. Here's some code I wrote for a side project a couple of years ago - it was a side project, not meant for real world production, and it's a couple Django versions behind, so no guarantees as to quality, but should give you an idea:

https://github.com/danjac/ownblock/blob/master/ownblock/ownb...

Not my experience either. And in 2016, email-as-username should be default and work flawlessly out of the box.
Django REST Framework is excellent.
And quite slow
I can't even begin to imagine what your doing with it that makes you think it's slow.

Links or references to documented slowness?

Well, obviously an SPA would not run into any of the cruftiness since you're just using Django as a "dumb pipe" to the DB.
Not all SPAs are based on the DB+"dumb pipe"+SPA stack, sometimes you need to process things on the server, based on your business requirements and/or performance considerations. Sometimes the processing done in that layer can be quite significant. If that is your need, both Django itself (using JsonResponse and serialization objects) and Django REST Framework allow you to do so much more than dumb piping.
My point is Django is not limited by the fact that it was initially conceived as a framework for serving static web pages.