Ask HN: Choosing a Python framework for web development?
1–10 of 41 posts
Re: Ask HN: Choosing a Python framework for web development?
#21.) Previous skills with Mako, SQLAlchemy, Paste, or any of the other libraries that Pylons or Turbogears is based upon.
2.) Previous code in one of the above libraries
3.) Functionality needs that Django cannot satisfy in at least a couple of the following areas: authentication, user models, multiple database support, template extensibility, deployment. I say "at least a couple" because if you just need one, you can import it like you would in any other framework. The price is that many existing Django add-ons won't be aware of your choice.
Bad reasons include:
1.) "Django's only for CMSes." Not true; it works just as well for anything that involves web apps, including AJAX apps.
2.) "It's not scalable enough." The Washington Post runs on Django; I doubt you're going to get more pageviews than them.
3.) "My data doesn't easily fit in the relational paradigm." That's what the import statement is for; you can hook any data source you want up to a Django view.
4.) "Django's templating language is too restrictive." That's what template tags are for.
5.) "I'm really doing a full-fledged AJAX app, not a website." You can output JSON or XML data from a Django view as easily as HTML, and you're not limited to any particular JavaScript library. (I actually think Django views are more convenient for this than Pylons controllers; there's less boilerplate.)
Re: Ask HN: Choosing a Python framework for web development?
#3Start with Django unless you have a very good reason to use one of the other ones. Very good reasons include 1.) Previous skills with Mako, SQLAlchemy, Paste, or any of the other libraries that Pylons or Turbogears is based upon. 2.) Previous code in one of the above libraries 3.) Functionality needs that Django cannot satisfy in at least a couple of the following areas: authentication, user models, multiple database…
Re: Ask HN: Choosing a Python framework for web development?
#4Re: Ask HN: Choosing a Python framework for web development?
#5I've used pylons and cherrypy, and did some massive rails things way back when rails was still cool (2007). I prefer the cherrypy way of doing things vs. pylons, but they are mostly aesthetic choices. Django is probably your best bet unless you want something lightweight.
It is up to you, on what you want to do. If you are comfortable with writing your own SQL, then Django is not going to be as useful as something more light weight like cherry.py
Re: Ask HN: Choosing a Python framework for web development?
#6Start with Django unless you have a very good reason to use one of the other ones. Very good reasons include 1.) Previous skills with Mako, SQLAlchemy, Paste, or any of the other libraries that Pylons or Turbogears is based upon. 2.) Previous code in one of the above libraries 3.) Functionality needs that Django cannot satisfy in at least a couple of the following areas: authentication, user models, multiple database…
Alright, thank you. I guess exactly what I was looking for. Couple of other questions that just popped up while reading your (thoughtful)reply a)- How much is the learning curve--considering my skill-set? From what I can tell from their website, I guess decent amount of documentation is available so I hope I won't get stuck. b)-My only fear is the lack of JavaScript(Ajax) skills. For that reason alone, I was interest…
b.) Don't worry about that - doing AJAX well depends a lot more on your JavaScript skills than on the server-side technology used, and for anything serious, you'll need to know real JavaScript. Pylons does have a nice shortcut in that they ported over all the Rails JavaScript helpers, so you can get simple things like pagination, reloading divs, and JavaScript buttons without actually using any JavaScript. But they implement this using Prototype, which is a library that I personally refuse to touch for the reasons in b.3)
b.2) There're actually like 5 different JSON libraries for Python, and you can mix & match them with web frameworks (they just output a string, and any decent web framework will let you send a string to the browser). I use simplejson (which comes in the standard library of Python 2.5 - no installation necessary) for flexibility and cjson for speed.
b.3) Stay away from any JavaScript library that messes with the prototypes of built-in object types or adds lots of functions to the global namespace. The bad list includes Prototype, Mootools, and 99% of random JavaScript snippets you'll find on the web. The good list includes JQuery, YUI, and any libraries built on them. The reason for this is compatibility: JavaScript has no native namespacing support, and so if you get 3rd-party libraries from two sources that don't pay attention to namespacing, they invariably end up stomping on each other's functions.
b.4) If you're serious about doing an AJAX app, take the time to really learn JavaScript well. My last employer thought they could paper over all the dark corners and browser incompatibilities with AJAX JSF components; they always ended up coming back to bite us in the end. Know what you're doing. The Rhino Book and John Resig's "Professional JavaScript" are good sources, as are the websites of Doug Crockford, John Resig, and Dean Edwards.
b.5) Start by doing non-AJAX apps with Django and only add AJAX when you absolutely need it to improve the user experience. Aside from flattening the learning curve, this also disciplines you into treating AJAX as an additional tool for the toolbox, not a buzzword. A lot of companies have gone AJAX-crazy (like my last employer) and are treating everything like a desktop app when they should start as a plain webapp and only add additional interactivity when necessary. The web succeeded for a reason; trying to recreate the desktop in a browser is a step backwards.
Re: Ask HN: Choosing a Python framework for web development?
#7Re: Ask HN: Choosing a Python framework for web development?
#8Start with Django unless you have a very good reason to use one of the other ones. Very good reasons include 1.) Previous skills with Mako, SQLAlchemy, Paste, or any of the other libraries that Pylons or Turbogears is based upon. 2.) Previous code in one of the above libraries 3.) Functionality needs that Django cannot satisfy in at least a couple of the following areas: authentication, user models, multiple database…
Re: Ask HN: Choosing a Python framework for web development?
#9Re: Ask HN: Choosing a Python framework for web development?
#10Start with Django unless you have a very good reason to use one of the other ones. Very good reasons include 1.) Previous skills with Mako, SQLAlchemy, Paste, or any of the other libraries that Pylons or Turbogears is based upon. 2.) Previous code in one of the above libraries 3.) Functionality needs that Django cannot satisfy in at least a couple of the following areas: authentication, user models, multiple database…
I forgot to check out Pylons for the project one of our contractors is working on. Thanks for mentioning it, we might consider it if Django continues to be cumbersome.