You might also want to check out Nitro, another Ruby-based web programming
framework. Nitro differs from Rails in that Nitro does all the SQL setup
for you.
Phil-
I'm not sure I understand your comment. My issue with Django isn't about
the database (though I do think it's interesting that Rails creates your
model objects on the fly from the db, see my post about the OSCON Rails
Session for more info), it's about Django storing view information in the
model. Does nitro do something similar? That doesn't feel right to me.
You could consider the admin stuff in the model Django's version of
"scaffolding"... It's only there to bootstrap the app building process--
just like Rails' scaffolding.
Jason-
What do you mean by going past the tutorials? The tutorials aren't good,
or that there are hidden features? ;) (I suppose once one builds a "real"
app, they will understand the framework more). I'll check out the thread
you suggested.
If you only finish tutorials 1 and 2, where the admin interface is
discussed and where you make interface changes in the model definition, you
may be left an odd impression of the framework. And that odd impression is
"you regularly put all your UI stuff in your model", when in reality, it
only holds kinda-true for the admin UI... But even then, if you dig deeper
into what powers the admin UI, you'll find that there are delivered views
and templates that pick up the "hints" defined in the model for rendering
output or changing state. I'll leave it to the Django authors to explain
why they didn't completely remove the admin stuff from the Django Models.
My guess is that they thought it was a pragmatic compromise betwee speed of
development and strict adherence to MVC.
Mat: My suggestion of Nitro was because Django claims to do all of your SQL
setup (no need to write SQL), while Rails (currently) requires you to do
some SQL setup. This aspect of Rails seems to violate the DRY principle in
my thinking: why do I need to define my database in two places (once in a
Ruby class and again in SQL)? Nitro, like Django, claims that you need not
write any SQL - for me this seems like a big plus as I would rather not be
bothered with SQL. (OK, I'll admit, I'm one of those people who says "hey,
my language has hashes, classes even Struct's, why do I need a database?")
Jason-
Thanks, I'm glad enjoy my blog. I'm planning to finish the rest of the
tutorials (it's a matter of time...).
I can't wait for a solid python alternative to the JSP/Servlet/Struts
toolset, but until there's something that supports internationalization as
well as the Java world does, I can't really use python for web work, which
is frustrating.
It appears someone in the Django world is thinking about this, but it's a lot of work to backfit a toolkit that didn't have i18n designed in from the beginning -- and this doesn't even take the existing site.py/setdefaultencoding mess into consideration. I love python and use it for everything *except* web work, but I hate how nasty it can be to work with unicode, and I've noticed how that affects a lot of projects like Django.