I'm learning python and am interested in using it for web-scripting. What frameworkes are out there and do I need one?

StackOverflow https://stackoverflow.com/questions/4980756

Question

I've been learning python for use in ArcGIS and some other non-web applications. However, now that I've taken on building a personal website I am interested in using it for web development (as it is the only scripting language I currently know).

I've noticed that there are a lot of these things called "frameworks", such as Django. From what I understand they are just a collection of packages to save you from re-inventing the wheel but I don't really know how they work.

Furthermore, I do not like GUIs, if I need a framework I would like to find one that could be used through a terminal, starts out simple and can be scaled for more complexity when I'm ready. Any advice or ideas on frameworks and why I would want to use one?

Was it helpful?

Solution

The Python web frameworks have nothing to do with GUIs, and can all be used via the terminal.

The benefits of a framework, as you say, are all to do with making your life easier by supplying the components you need to build a website: the main ones are database interaction through an ORM, a templating system, and URL routing. On top of that, the big frameworks also included optional extras like user authentication, administration interface, and so on.

Personally I like Django, but your mileage may vary: I would say, though, that whatever you do with Python and the web will require some sort of framework, even if it's one of the absolute minimal ones like Flask which basically do just the routing part. There's simply no point in writing all this stuff from scratch when it's been done for you.

OTHER TIPS

I would recommend to use Google App Engine - it has a all the basic framework components for quick start and there are several books that explain how to use it in details as well as tutorials. Also there is a great community around it.

  • apps hosting is free there!

I personally, have build a simple site after skimming through a book, and I had practically no prior web-development experience.

I'd second the post above: Django is a great framework and will save you loads of time in the long run.

Pretty much every challenge you'll come across when writing a web application will already have been solved, e.g. How do I send emails? What about an admin interface to edit the data? User security?

In my view picking the best framework is all about the ecosystem around that framework. How well used is it? Is it discussed widely on the internet? Have others encountered, and solved, the problems I'm facing?

In terms of where you start, see the Django Tutorial here: http://docs.djangoproject.com/en/1.2/intro/tutorial01/

If you think Django offers you too much, I'd recommend that you take a look at CherryPy just to compare the different, and much simpler, approach.

With Python, you've got lots of options. To start, I would recommend looking here -- it explains the basics and provides a fairly complete list of frameworks.

If you're looking for something that starts out simple but can also handle more complexity, then you should take a look at web2py. It requires no installation or configuration, has no dependencies, and includes a web server and a relational database. It also includes an optional web-based integrated development environment and admin interface, but you can work through the terminal instead if you prefer.

It's very easy to learn and was designed for ease of use, faster development, and security. You can get a lot done with very little code thanks to the included scaffolding app along with many sensible default behaviors. As things get more complex, web2py can handle it, as it is a well-integrated full-stack framework with lots of built-in functionality, including a database abstraction layer, form handling and validation, access control, web services, and easy Ajax integration.

Personnally, I don't use any framework, I write either from scratch on BaseHTTPServer, or using WSGI (with mod_wsgi).

It is a bit long to write the skeleton, but I think it is faster (I mean at runtime), there is less constraints, and there is lesser to learn.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top