We love designing and developing websites, but what really drives us is solving problems and cultivating strong relationships with our clients
Five things I love about Django.
By : shabda
I posted five things I hate about Django, so as a penance, I will of course have to tell the "Five things I love about Django".
The Admin interface rocks:
I have demoed Django to a fair number of People, and when you write a few lines in models.py, and then show the auto generated Admin interface, this is a jaw-dropping moment. Happened with me every time I introduced Django to someone. In Barcamp Hyderabad 05, people could not believe this was so easy, and asked if there was some more code behind this.
Of course Admin is much more useful than as a show off tool. When I am developing a new website I write the views to query the DB first, at that time the Admin is indispensable. And in many cases, just writing the Models, and tweaking the Admin is enough for me.
Documentation is comprehensive, available, and always maintained:
When I was looking around to learn a python framework, after search I has to choose between Django and Turbogears. Now after having used Django a lot, and Turbogears for comparison, I believe Django to be better. But this decision I could not have taken when I was just starting out. I choose Django because it seemed better documented, with tutorials more freely available.
Having the whole framework documented, from the most basic, to the more esoteric is huge time saver.
The community is extremely helpful:
Whenever I have asked, a question in django-users or on IRC#Django I always get helpful responses, and a lot of help. Few communities have this culture where, people with so much experience are willing to help out people who are just starting out.
There is a reusable app for almost everything.
Need to handle hierarchical data as relational data, django-mptt to the rescue. Need to handle voting, tagging, or registration. Well we got you covered.
Easy things are easy, and hard things are possible:
You just want to do as SELECT * FROM ... WHERE ..., just use Model.objects.filter. Ok, so your queries span a number of relationships, and you want to reduce the number of queries, use select_related. Or might be you want to model a relationship, which Django ORM can not, might be a little sql in .extra will help you? Or might be you have a lot of GROUP BY or UNION ALL, drop to raw sql in connection.cursor. Depending upon your requirement, you moved from the trivially easy to the somewhat hard.
Similarly with templates, you just want to substitute some variables. Use {% for ... %} and {{ ... }}. Or you want to do something difficult/custom in template, (and are sure that template is the right place to do this), just write a template tag.
Bonus
The development web server: When you are developing, not worrying about Apache, and any configuration, is a huge help. And the fact that pdb plays nice with web server is awesome, (compared to GAE servers which give a BdbQuit exception).
Comments
- How to use pep8.py to write better Django code
- Screencast: Django Tutorial Part 1
- How and why to use pyflakes to write better Python
- Getting started with South for Django DB migrations
- A brief overview of Vagrant
- Writing jQuery plugins using Coffeescript
- Behind the Scenes: Request to Response
- Using SQLite Database with Android
- Haml for Django developers
- Coffeescript for Python programmers
- rails
- django
- linkroundup
- django opinion
- opinion
- business
- API
- appengine
- python
- satire
- startup
- Uncategorized
- marketing
- personal
- rambling
- search
- interviews
- seo-interviews
- 5startupideas
- ideas
- seo
- tips
- forms
- paypal
- utilities
- datetime
- web2.0
- Amazon
- algorithms
- presentations
- products
- pinax
- satchmo
- ecommerce
- microsoft
- yahoo
- book
- tutorial
- models
- aggreagtion
- meta
- India
- apps
- about
- CSS
- Design
- wordpress
- test slug
- vim
- urls
- reviews
- javascript
- xmpp
- emacs
- Typography
- Grid Theory
- Color Theory
- iphone
- android
- titanium
- mobile applications
- CSS3
- Browser Compatibility
- mobile
- jobs
- lamson
- django setup
- files
- upload
- jsTree
- hierarchical view
- web page
- Treeview
- coffeescript
- request
- response
- South
- django south
- django migration
- --fake
- screencasts
- February 2012
- January 2012
- December 2011
- October 2011
- September 2011
- July 2011
- June 2011
- April 2011
- February 2011
- January 2011
- December 2010
- November 2010
- October 2010
- September 2010
- June 2010
- April 2010
- March 2010
- January 2010
- December 2009
- November 2009
- October 2009
- September 2009
- August 2009
- July 2009
- June 2009
- April 2009
- March 2009
- February 2009
- November 2008
- October 2008
- June 2008
- May 2008
- April 2008
Thank you. I'm just learning Python and Django and was worried about doing complex SQL.