Django Vs Rails

Discussion in 'Python' started by flamesrock, Sep 6, 2005.

  1. flamesrock

    flamesrock Guest

    Firstly, this topic is NOT intended for trolling or starting any flame
    wars.

    I want to know if anyone has experience with these frameworks, and if
    so, how do they compare? Which one do you prefer?

    Going back to school in a few days, I simply don't have the time to try
    both.

    -thanks
    http://djangoproject.com
    http://rubyonrails.com
     
    flamesrock, Sep 6, 2005
    #1
    1. Advertising

  2. flamesrock

    D H Guest

    flamesrock wrote:
    > Firstly, this topic is NOT intended for trolling or starting any flame
    > wars.


    Whatever you say, "flamesrock".
     
    D H, Sep 6, 2005
    #2
    1. Advertising

  3. flamesrock

    gene tani Guest

    gene tani, Sep 6, 2005
    #3
  4. flamesrock

    flamesrock Guest

    Thanks for the links, gene tani.

    D H,
    'flamesrock' refers to the Calgary Flames, not the act of flaming.
     
    flamesrock, Sep 6, 2005
    #4
  5. gene tani wrote:
    > http://griddlenoise.blogspot.com/2005/07/python-off-rails.html


    I don't think that opinion is very founded - especially what he thinks
    metaprogramming is about, and what not.

    What he seems not to grasp is the crucial difference between django and
    rails/subway (at least in the way the yare _used_ by his examples):

    - rails/subway reflect over a existing table. They create OR-mappings
    based on that. You only specify exceptional attributes for these mappings.

    - django specifies the whole meta-model in python - and _generates_
    the SQL/DDL to populate the DB. So obviously you have to be more verbose
    - otherwiese you won't have the fields you need.


    I personally prefer the latter approach - I want my tables modeled after
    my objects, not the other way round. I tried to find out if subway and
    rails can do the same - that is, generate the sql. For subway the lack
    of documentation prevented that, and I didn't find it in rails , too.

    And there is at least one shortcoming to the first approach, when using
    the most popular RDBMS, MySQL: The lack of foreign key constraints makes
    me wonder how to automatically infer 1:n or m:n relationships. From a
    rails tutorial, I see that one has to declare these too:

    http://www.onlamp.com/pub/a/onlamp/2005/01/20/rails.html?page=5


    But maybe someone who has expirience with subway or rails can elaborate
    on this?

    Diez
     
    Diez B. Roggisch, Sep 6, 2005
    #5
  6. flamesrock

    gene tani Guest

    gene tani, Sep 6, 2005
    #6
  7. Dnia 5 Sep 2005 19:06:51 -0700, flamesrock napisa³(a):

    > Firstly, this topic is NOT intended for trolling or starting any flame
    > wars.
    >
    > I want to know if anyone has experience with these frameworks, and if
    > so, how do they compare? Which one do you prefer?


    Django's ORM does not work with SQL Server (only Postgresql, MySQL and
    SQlite). it would be problem to use Django for m$ based intranets. Rails
    has more features, better docs and seems to be more mature than Django. And
    last but not least, Django has no official release up today.

    --
    JZ
     
    Jaroslaw Zabiello, Sep 6, 2005
    #7
  8. flamesrock

    D H Guest

    flamesrock wrote:
    > D H,
    > 'flamesrock' refers to the Calgary Flames, not the act of flaming.
    >


    It was just a joke about your statement and your name. I thought it was
    obvious enough that a smiley wasn't necessary. I don't care though,
    flames happen on comp.lang.python all the time.
    Go with Rails. Django is only like a month old. Unless you are more
    comfortable using python than ruby.
     
    D H, Sep 6, 2005
    #8
  9. D H wrote:

    (snip)
    > Go with Rails. Django is only like a month old.


    Please take time to read the project's page. Django has in fact three
    years of existence and is already used on production websites, so it's
    far from pre-alpha/planning stage.

    --
    bruno desthuilliers
    python -c "print '@'.join(['.'.join([w[::-1] for w in p.split('.')]) for
    p in ''.split('@')])"
     
    bruno modulix, Sep 6, 2005
    #9
  10. flamesrock

    D H Guest

    bruno modulix wrote:
    > D H wrote:
    >
    > (snip)
    >
    >>Go with Rails. Django is only like a month old.

    >
    >
    > Please take time to read the project's page. Django has in fact three
    > years of existence and is already used on production websites, so it's
    > far from pre-alpha/planning stage.
    >


    Don't make any assumptions about what I have and haven't read. Django
    was only publicly released in mid-July. Less than two months ago.
    I never implied it was "pre-alpha" or in a "planning" stage.
    The Ruby framework is also more mature and much much more tested than
    Django. But even then I am not stating one is inherently better than
    the other. Both seem very well designed. But if you have no clue about
    either project like the original poster, then I'd recommend Rails,
    unless you are already comfortable with Python (and not used to Ruby),
    which case go with Django.
     
    D H, Sep 6, 2005
    #10
  11. flamesrock

    Alan Kennedy Guest

    [D H]
    >>Go with Rails. Django is only like a month old.


    [bruno modulix]
    > Please take time to read the project's page. Django has in fact three
    > years of existence and is already used on production websites, so it's
    > far from pre-alpha/planning stage.


    But the APIs still aren't 100% stable.

    http://www.djangoproject.com/screencasts/model_syntax_change/

    --
    alan kennedy
    ------------------------------------------------------
    email alan: http://xhaus.com/contact/alan
     
    Alan Kennedy, Sep 6, 2005
    #11
  12. D H wrote:
    > bruno modulix wrote:
    >
    >> D H wrote:
    >>
    >> (snip)
    >>
    >>> Go with Rails. Django is only like a month old.

    >>
    >>
    >> Please take time to read the project's page. Django has in fact three
    >> years of existence and is already used on production websites, so it's
    >> far from pre-alpha/planning stage.
    >>

    >
    > Don't make any assumptions about what I have and haven't read.


    Don't make the assumption that the advice to read the project's page was
    directed to you only !-)

    > Django
    > was only publicly released in mid-July. Less than two months ago.
    > I never implied it was "pre-alpha" or in a "planning" stage.


    That what I understood from your post, and I guess most readers would
    understand it that way.

    Now the fact that Django, while being young as a publicly realeased
    project, has in fact 3 years of existence *on production websites* is
    IMHO worth mentioning, so peoples who haven't read the project's page
    yet don't make the assumption that it must be too young to be usable in
    production. The "take time to read..." advice was directed to these
    people as well !-)

    Regards
    --
    bruno desthuilliers
    ruby -e "print ''.split('@').collect{|p|
    p.split('.').collect{|w| w.reverse}.join('.')}.join('@')"
     
    bruno modulix, Sep 6, 2005
    #12
  13. flamesrock

    gene tani Guest

    just to make it really easy, there's some really good blogs and
    detailed analyses of the frameworks, competition is good:

    http://del.icio.us/tag/rails django

    gene tani wrote:
    > Here's another, (i'm just flipping thru del.icio.us and furl tags, not
     
    gene tani, Sep 6, 2005
    #13
  14. flamesrock

    Terry Reedy Guest

    "bruno modulix" <> wrote in message
    news:431dca31$0$29335$...
    >D H wrote:
    >
    > (snip)
    >> Go with Rails. Django is only like a month old.

    >
    > Please take time to read the project's page. Django has in fact three
    > years of existence and is already used on production websites, so it's
    > far from pre-alpha/planning stage.


    One can also check it out in action.
    http://www.ljworld.com/ is the site it was developed for.
     
    Terry Reedy, Sep 6, 2005
    #14
  15. Diez B. Roggisch wrote:
    > I tried to find out if subway and
    > rails can do the same - that is, generate the sql. For subway the lack
    > of documentation prevented that, and I didn't find it in rails , too.


    In Rails you can do that with the command:

    $ rake db_structure_dump

    However I think it's not the prescribed way of using it because it
    tends to involve losing all your data every time you make a schema
    change. I think they recommend doing this once at the start of
    development if you don't have a DB schema yet. Once you're up and
    running, if you rely on ALTER TABLE type commands and manually update
    your code to match the new schema, although it's more work it leaves
    your data intact. I think that's the idea anyway.


    > And there is at least one shortcoming to the first approach, when using
    > the most popular RDBMS, MySQL: The lack of foreign key constraints makes
    > me wonder how to automatically infer 1:n or m:n relationships. From a
    > rails tutorial, I see that one has to declare these too:
    >
    > http://www.onlamp.com/pub/a/onlamp/2005/01/20/rails.html?page=5
    >
    >
    > But maybe someone who has expirience with subway or rails can elaborate
    > on this?


    >From my experience with Rails, the OR mapping isn't hugely automated.

    That is, some manual work is required if you change the schema, to
    update the code that operates upon it. However although this is another
    step it is pretty trivial due to the metaprogramming style methods.
    Besides, if you're altering the schema you tend to have to update some
    code anyway as you're most likely altering the functionality of the
    system a little. And as I said above, a loose/manual OR mapping has its
    benefits; I don't feel anxious about losing my data/schema when using
    Rails because I know it leaves it alone.
     
    Greg McIntyre, Sep 8, 2005
    #15
  16. flamesrock

    flamesrock Guest

    Wow- thanks for all of the replies. I'm torn.

    On the one hand, I'm fluent in Python and love it.

    On the other, Rails seems to have a brighter future, and is a bit more
    featureful (at this time.) However the only Ruby I know is what I've
    already learnt with Python(even though I would like to learn it).

    How difficult would it be to learn Ruby+Rails, assuming that someone is
    already skilled with Python?

    Is it worth it?
     
    flamesrock, Sep 8, 2005
    #16
  17. flamesrock

    James Guest

    I actually like the framework to reflect on my database. I am more of a
    visual person. I have tools for all my favorite databases that allow me
    to get a glance of ER diagrams and I would rather develop my data
    models in these tools rather than in code. Further more I rather like
    the idea of parsimonious use of code (which is probably why I use
    Python in the first place) and do not really like manually specifying
    data schemas in code as much as possible.

    Is some familiar with a Python Framework that builds by reflection.
     
    James, Sep 8, 2005
    #17
  18. flamesrock

    Marek Kubica Guest

    Hello!

    On 7 Sep 2005 20:56:28 -0700 flamesrock wrote:

    > On the other, Rails seems to have a brighter future,

    Why that? Django is not yet released and everybody is talking about it.
    Like it happened with RoR.

    > How difficult would it be to learn Ruby+Rails, assuming that someone is
    > already skilled with Python?

    Learning Ruby: quite trivial, as Ruby is like Python, but sometimes there a
    Ruby-way and a non-Ruby-way (codeblocks and stuff like this) and to write
    nice Ruby programs you better write in the Ruby-way.

    > Is it worth it?

    Well, I've learned it, because it was easy but I haven't yet found a really
    significant difference that makes Ruby much better than Python. You can
    write some things in an very elegant way, but sometimes the Python solution
    is more readable. But the docs are sometimes.. say: very compact ;).
    As Ruby is not that hard to learn you could give it a try - maybe you'll
    like it, maybe not.

    RoR is not the only framework, some folks prefer Nitro.

    greets,
    Marek
     
    Marek Kubica, Sep 8, 2005
    #18
  19. flamesrock

    Ian Bicking Guest

    Diez B. Roggisch wrote:
    > - rails/subway reflect over a existing table. They create OR-mappings
    > based on that. You only specify exceptional attributes for these mappings.
    >
    > - django specifies the whole meta-model in python - and _generates_
    > the SQL/DDL to populate the DB. So obviously you have to be more verbose
    > - otherwiese you won't have the fields you need.


    Subway is built on SQLObject, and SQLObject can both create tables and
    read schemas from an existing database. I don't know what style is
    preferred at the moment in Subway, but personally I always create my
    tables with SQLObject because I always end up enumerating all the
    features of the tables eventually anyway.
     
    Ian Bicking, Sep 14, 2005
    #19
  20. flamesrock

    Jeff Shell Guest

    My opinion, as posted there, was pretty immediate and only going off of
    surface values. I just saw in Django what I had seen too much of in my
    own code. I've written similar things in Zope and Formulator that did
    all sorts of fancy automatic 'admin screen' generation, DBMS CRUD
    statements. I even applied those same tricks to LDAP with some success.
    So some of what I saw with Django reminded me of code that I both loved
    and hated - it made my data management work easy, but it was ugly and
    hard to navigate and maintain, and I could never remember even my own
    shortcuts and options of what to have in my nested dictionaries and
    lists and tuples that defined all of these structures.

    It was also an all-too-quick response in that I perceived, wrongly,
    that Django was another Rails clone. I was quickly corrected on this,
    and believe I posted a correction later. As I've said in some other
    posts on my site - I don't really care much for the Python "Web
    Frameworks" which go off and try to mimic the technology of the day.
    I've been through competing with Perl, with Servlets, with J2EE, with
    PHP/ASP, and now with Rails, and just about every implementation I've
    seen of these has been underwhelming, to say the least. I myself am
    guilty of writing an early WebObjects inspired toolkit back in '96.
    Django is its own thing, and I give it credit for that. Some recent
    changes to the Django model syntax make it more palatable to my tastes,
    but I doubt that I'll personally be leaving Zope 2 or 3 for any of
    these systems any time soon. Zope / Principia / Bobo have all served me
    well for nearly a decade now, and Zope 3 makes ZODB based Zope
    development so easy and powerful that I hope to never have need of an
    ORM system again. These ORM tools like SQLObject and ActiveRecord still
    seem best suited for writing applications from scratch. Ian Bicking and
    Django people both have stated here that you can "conveniently generate
    SQL/DDL to populate the DB". If that's the situation, an object
    database like the ZODB or Durus may work just as well, without the
    translation to SQL and back. ORM only gets interesting to me these days
    when I have to map to to large scale pre-existing systems, and even
    there I'm having better experiences with other styles of storage to
    application data translation, validation, security, and management.
     
    Jeff Shell, Sep 14, 2005
    #20
    1. Advertising

Want to reply to this thread or ask your own question?

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. JZ
    Replies:
    4
    Views:
    333
  2. Ray
    Replies:
    96
    Views:
    1,706
  3. John Posner

    Question on Django and Django Book

    John Posner, Nov 13, 2010, in forum: Python
    Replies:
    0
    Views:
    331
    John Posner
    Nov 13, 2010
  4. eGenix Team: M.-A. Lemburg
    Replies:
    0
    Views:
    147
    eGenix Team: M.-A. Lemburg
    Jun 18, 2013
  5. Gary Roach
    Replies:
    0
    Views:
    146
    Gary Roach
    Jan 2, 2014
Loading...

Share This Page