The biggest django pain points to me:
  - Templating system is a PAIN.  You have to learn a new language,
and in the end it's not as powerful as python.
  - Database ORM can be a pain.  Same reasons.  You have to learn a
big special-purpose API in addition to SQL, and learn how it
translates between the two.

In general, django tries to build too many special-purpose
abstractions for everything.  This makes it more complicated.  You
have to learn more.  And they get in your way when they aren't
powerful enough to do what you need.  Then you have to hack them.

more details on django pain I've encountered:
- template system requires learning a new language
- that new language is limited, e.g. difficult to define a variable,
makes simple things hard
- because it uses ORM instead of DAL, you need to learn new object
language for selecting and updating database, and learn how it maps to
SQL, because eventually you need to understand the raw tables too
- you have to type things at the command line more often to make
changes.  So you shut down the server, type a command, restart the
server.  some of these things are automatic in web2py.  You just edit
the code, and everything reloads automatically.
- database migrations require using "south", an external plugin system
- errors in your use of django will often crash deep within django.
you'll be looking at a stack trace to some internal django file and
not realize it's because you added a '/' to the end of a path in
settings.py
- more complicated to set up, mucking around in settings.py
- constrained in how you pass variables to views from controllers.
e.g. can't set global variables, that apply across multiple views,
like a breadcrumb path.  have to specify it manually in each
controller and view.
- have to type arcane things sometimes like "return
render_to_response(blah)" at the end of a controller instead of just
"return blah"

Reply via email to