I am trying to decide whether to use Pylons or Django. Both are frameworks for building Python web applications, but with opposing philosophies.

Django tries to be everything. It comes with its own ORM, its own template engine, its own everything. That gives you a nice developing experience because everything fits together and because very nice applications can be built on top of all those components, like the admin tool, which is amazing.

On the other hand, if you don’t like one component, you can’t just remove it and put another one in its place. Maybe you can, but it is most likely that it won’t go very smooth. All these issues apply equally to Rails.

Pylons doesn’t try to do anything else than the basics, and leaves the rest to external libraries. External libraries that you pick, and switch if you feel like it. This is closer to real-, I mean, non-web-application development where you generally don’t use frameworks. It sounds good, but as soon as you start using Pylons, you see that it seems like a bunch of different stuff badly glued together. The whole experience ends up not being as pleasant although it is, I’d say, more professional (you are picking the tools you think are right, not whatever that was already there).

But there’s more. If you develop an application in the Pylons way, you can reuse parts of it without depending on the web framework. You use the database models in a desktop application and you only depend on SQLAlchemy (or whatever ORM you picked). You don’t end up with a desktop application that depends on a web framework, which doesn’t makes sense. This may be important or most likely, not.

It would be nice if something like Django was built on top of Pylons. That would be something like, if you use Elixir and you have this or that template engine, you get a nice administration tool, if you don’t, you don’t get it. But you still can pick your philosophy without changing basic parts, like the way you write the configuration file. Given infinite time this facts should reach the conclusion that Pylons is the right choice, but the Django’s admin tool is so sexy!