What do you like about Django?

What do I like about it :

  • Very simple ORM
  • clear separation of template / controller
  • django-admin
  • pluggable apps : it seems to me that the Django community really nailed that one !

What made me switch :

  • mainly curiosity
  • I heard a lot of good things about it from a colleague
  • I wanted something more lightweight than the Java I do for a living
  • I had a side project heavily data-driven for which the Django-Admin interface is very useful

What features I'd like :

  • better / simpler control of the transactions (configuring different types of transactions (read only / read write / some tweaking here and there) isn't as easy as I am used to. Having a session in view model, where the transaction is still open in the view doesn't make me all that comfortable, I would prefer if the transactions didn't leave a service layer. But again, there isn't really a service layer in the Django model.
  • better model for business logic (maybe that's just me, but I miss the service oriented approach of enterprise java, I never know if I should put the business logic in the view, in the form or in the model. None of those solution make me feel warm and fuzzy ... at the same time, I don't have heavy business logic in the application I develop for the moment, and I would probably still use Java for those)
  • stability (in the sense of not changing, not in the sense of not crashing). Again, coming from Java, where I'm still working on Java 1.4 for a lot of projects, having a project that just released 1.0 and all the refactoring that went with it is not very reassuring. It did take some work to follow trunk and using 0.96 was not particularly compelling. I don't think I would feel comfortable to use it on a mission critical enterprise project yet.

I realize that there is quite a few improvements that I would like. Don't get me wrong, I love Django and I will stick to it for a lot of projects. I just wont put it everywhere yet ...


What do you like about it?

URL dispatching: I was never a big fan of "/foo.php" is the file "foo.php" on my server, and if I want nicer URLs I need to mess around with mod_rewrite and keep that in line with what my logic in foo expects.

ORM: Because 90%+ of your queries, in my experience, do not need to be written by hand. Smart caching is much more important for performance, in general. You can always drop to raw SQL as needed.

Middleware and Signals: Easy to extend most parts of the request / response / view / render cycle without touching Django code itself.

What made you switch/use it?

It came out when I was disappointed with the Python web framework offerings. An easy sell for me.

How fast is it in production?

Hmm, to be honest, I've never cared too much. The webserver part of your app is (in my opinion) always the easiest to scale. As long as you use 'best practices' and share nothing, all you need to do is add a software load balancer and you can add new webservers until the cows come home. The first bottleneck people generally hit is database load - but Django gives you great caching APIs that help you alleviate that.

That said, I only skimmed this but it seems faster than Rails and the well known PHP frameworks: http://wiki.rubyonrails.org/rails/pages/Framework+Performance

How hard is it to master it?

I guess it depends how you define 'master'. The documentation is great, over the course of a decent sized site/app I think you'll use a little bit of everything, which is a great start.


Likes

The excellent Documentation. Together with help from stackoverflow I have learned a lot in only a few days. It writting in Python. It has the wonderful contrib.admin which is even modular and extensible to embed it into the web app proper.

Dislikes

None so far. I am still enchanted

Switch

Its my first web framework, so no switch. After using Python for some years Django seemed the natural selection to me, mainly for its clean design.

Tags:

Python

Django