What are the best reasons for when and why people should use Django?

158 views
Skip to first unread message

Eric Frost

unread,
Aug 9, 2014, 4:30:54 AM8/9/14
to django-d...@googlegroups.com
Django Developers,

I'm giving a talk at a general tech conference next week and it's
mostly ready, but would welcome response for when and why developers
should look to Django (vs. other frameworks like Ruby on Rails) when
starting new projects.

Would love to hear any thoughts and arguments!

Thanks!
Eric
m: 312-399-1586

Mattias Linnap

unread,
Aug 9, 2014, 9:14:43 AM8/9/14
to django-d...@googlegroups.com
I'm not sure it's possible to make a case for Django vs. Rails on anything but personal preference.
But it might be easier to argue why *Python* is a good language to learn, and therefore Django is the obvious web framework to use.

For a very wide range of use cases, Python tends to be the second-best tool to use (and personally, I think often the first):
* Heavy numerical modelling? Matlab might be the best, but Python + numpy is also great.
* Analyzing data and plotting pretty graphs? R might be the best, but Python + scipy + matplotlib is also great, especially if you need to pre-process the data.
* Financial analysis? Excel is mandatory, but you can replace the horror of VBA with Python plugins.
* Command-line utilities? Could use bash, perl or something else, but Python works best for anything longer than 10 lines.
* Cross-platform desktop apps? Maybe Java or C#, but Python + QT is pretty good.
* Web apps? Python + Django is one of the best.

And so on. Especially for non-computer scientists, learning Python instead of a specialised language or tool opens up the most possibilities. 

Josh Johnson

unread,
Aug 10, 2014, 4:06:22 AM8/10/14
to django-d...@googlegroups.com
Django documentation is phenomenal, leagues better than ROR's - the ability to dial back and look at documentation for legacy version of django and filter out the newer features is also amazing.
I decided to go the python/django route based solely on the ease of finding exactly what I needed in the docs along with examples for everything.  It's really some of the best framework documentation out there.

Tim Chase

unread,
Aug 10, 2014, 4:07:14 PM8/10/14
to django-d...@googlegroups.com, thin...@gmail.com
On 2014-08-10 01:06, Josh Johnson wrote:
> Django documentation is phenomenal,

I second Josh's comment. I'd naively assumed that all "big Python
web-framework" documentation was as good as Django's. However, when I
had to do some work on a contract involving CherryPy and
SQLObject...marcy was it a painful wake-up. Bottle's documentation
was better than CP/SQLObject, but still not up to the high bar set by
Django's.

-tkc



Joe Tennies

unread,
Aug 10, 2014, 11:28:33 PM8/10/14
to django-d...@googlegroups.com, thin...@gmail.com
First, the obvious alternative: Rails.

I would argue that many of the advantages RoR had are starting to go away. The two obvious advantages were Heroku and schema migration. Heroku now supports Python and Django... done. While Django has had South, the problem is that not everyone used it. This should obviously be getting fixed with Django 1.7. This is a bit of an issue as 1.7 isn't out and not every reusable app has released support for it yet. That stated, unless people are working quick, I assume that any reasonable sized site will not finish before 1.7 releases, though this is obviously still an issue.

I'll agree with all the Python is good. I had a person that liked RoR explain Ruby as a great language to build a Domain Specific Language on top of. This means that I can learn Django and eventually reuse the stuff I learned to build pretty much any other kind of app. Ruby, on the other hand, may have a steeper learning curve as RoR tended to do more monkey-patching of how things worked. Also, I like that I can pick up most anyone's Python code and generally understand what it's doing. Perhaps I don't do enough Ruby, but I think the Perl roots of it make that harder.

Both seem to be solve the problems of building a small-to-medium site and helping with the common problems. They both have a decent collection of reusable apps that one can use to help build up their site quickly. I'm sure both have the ability to slowly whittle the framework away to handle large sites. Large sites tend to have very specific problems that need very specific solutions that the average person doesn't need. See Jacob's PyCon 2009 speech @ about 24 min in (http://pyvideo.org/video/225/pycon-2009--designing-a-web-framework--django--39). You also have the interesting ability to use a fair amount of the knowledge you gained from Django and take it to Flask if you end up needing a system that is quite different from the problems that Django tries to solve.

But in the end, Django and Rails are quite similar in the problem scope they attempted to solve. They took many similar approaches and I'm sure borrowed from each other heavily. They are both quite stable at this point, and I don't expect either to just disappear.

Now completely different frameworks.

Java has some decent large scale frameworks and I remember hearing about some ones for smaller sites (and reduce the XML needed). They also have the .war file standard which I hear makes deployment standardized. The biggest question in my mind is whether Oracle will either step-up or let someone else take Java and innovate with it.

PHP has several frameworks that seem similar in scope to Django (CakePHP and Symfony for example). I don't know these well. There's also Drupal. Drupal is interesting in that it's not only components but also integration. You can probably start out and get a site built with many simple problems without writing so much as a line of code. This leads to the problem of that "I need to go outside the framework" being quite the learning curve, but you can build a site quite quickly. My bigger concern has been the security issues that have plagued Drupal.

The other obvious language is Javascript and Node.js. This is one has a distinct advantage when thinking of real-time async things, especially websockets. I'm uncertain of the more "standard"/classical style things. This is a definite "horses for courses" thing. I'll admit to not following Node.js much, but I just don't think any framework has been around long enough to not be concerned whether they'll still be around in 2 years.





--
You received this message because you are subscribed to the Google Groups "Django developers" group.
To unsubscribe from this group and stop receiving emails from it, send an email to django-develop...@googlegroups.com.
To post to this group, send email to django-d...@googlegroups.com.
Visit this group at http://groups.google.com/group/django-developers.
To view this discussion on the web visit https://groups.google.com/d/msgid/django-developers/20140810150538.7097b91b%40bigbox.christie.dr.
For more options, visit https://groups.google.com/d/optout.



--
Joe Tennies
ten...@gmail.com
Reply all
Reply to author
Forward
0 new messages