Thursday, February 17, 2011

What do you like about Django?

I started to learn Django a few days ago, and as i dive into it it seems that I'm starting to like it even more.
Trying to migrate from other language. I won't say which one, as the purpose of this question is not to bash anything.

So i would like to know your opinion about Django.

What do you like about it?
What made you switch/use it?
What features you would like it to have that aren't there?
What would make you switch to it?
How fast is it in production?
How hard is it to master it?

From stackoverflow
  • 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) isnt as easy as i am used to. Having a session in view model, where the transaction is still open in the view doesnt make me all that comfortable, I would prefer if the transactions didnt leave a service layer. But again, there isnt 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 dont 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 dont 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. Dont understand me wrong, I love Django and I will stick to it for a lot of projects. I jsut 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.

    daniels : "URL dispatching" i love it too
  • I haven't had had the opportunity to use it much. That said, my absolute favorite part of django is the built in administration console.

  • 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.

    TomA : Indeed, without the top-notch documentation Django would not be quite as attractive.
  • What do you like about it?

    • the templates, specifically the inheritance feature, was amazing after dealing with jsps
    • not having to write sql anymore

    What made you switch/use it?

    A friend had been following its progress before it was publicly released, and I've been using it for personal projects ever since.

    What features you would like it to have that aren't there?

    I realize this isn't a trivial problem, and I think Google summer of codes have been spent on this, but I would like to see better ways to evolve the db (which rails seems to do a pretty good job of).

    What would make you switch to it?

    I already use it at home, and I don't make those decisions at work.

    How fast is it in production?

    I've never run into issues, though for the most part django seems to stay out of the way, so performance seems based more on python or the db.

    How hard is it to master it?

    The documentation is pretty amazing, and enough people use it that answers are often available when that doesn't help. Additionally, when I've had to go into the source code, its been clean and documented as well, so I would say its easier to master than most frameworks, web based or otherwise.

  • Likes:

    • Pythonic (I can easily grok the language) and thus extend any part easily
    • Documentation,
    • community (I belong to the french one and they're very nice)
    • a full load of projects around it
    • full-integrated test engine. You can almost test a whole application without firing a web browser, just by writing tests.
    • the custom commands just rock. It allows you to perform custom tasks very easily, in a snap. I often use it to run batch tasks (cleanup a database, for example, or check for integrity on a production server - tests use their own database, not the actual data in your application).

    Why switch?

    • got bored of PHP-from-scratch.
    • had a RSI at the back of my hand, very painful. after switching to a semicolon-free language, it vanished (it's TRUE!)
    • much more solid developpement (TDD), and faster (you can buid a CMS in minutes) - as many other web framework, though.

    Dislikes:

    • no smooth data model migration. You often have to change your model because of an unexpected feature. That is painful, and you have to build it by hand, and it may be risky sometimes.

    How hard to master?

    • If you already have Python skills, you can build up things in a few hours.
    • If you don't, first dive into Python (heh) - that'd take a few days.
    • "Mastering" it may take some time... And you often discover gems in Django documentation that will make you yell "I love Django!" (well, it works for me)

0 comments:

Post a Comment