python web frameworks
DESCRIPTION
Python web frameworks presentation by Nathan VanGheem. Material covered: - The major frameworks around and differences between them - Micro frameworks - Templating languages - The state of Python 3 and Python Web Technologies - Brief ditty on NoSQL with MongoDB - How to get started The presentation video and sample code is available here: http://zootlinux.blogspot.com/2011/10/october-newlug-presentation-python-web.htmlTRANSCRIPT
Python Web Technologies
An overview of the various Python web technologies
What I'll Go Over
● Frameworks● Micro Frameworks● Templating languages● The state of Python 3 and the web● NOSQL
Frameworks Covered
● Django● Pyramid● A brief mention of Pylons and Turbogears● Bluebream● web2py● Flask(micro-framework)● Bottle
A note about WSGI
"WSGI is the Web Server Gateway Interface. It is a specification for web servers and application servers to communicate with web applications (though it can also be used for more than that). It is a Python standard, described in detail in PEP 333."
● Provides a way for reusable web components to easily work together through this specification
● Also allows you to easily deploy web application that follow this standard(gunicorn, mod_wsgi, uWSGI, etc)
Django
● "Full stack" framework● it's own tightly integrated built-in ORM● built-in authentication strategy● nice, auto-"magic" backend● one monolithic package● no interaction really with other communities● great for CMS-like applications● URLs are generated from specifying regular expressions
that map to python functions
Pyramid
● database backend agnostic but has supporting packages for sqlalchemy, zodb, mongodb.
● no authentication policy built-in but has supported add-ons● great authorization policy ● small footprint, fast, well tested and very well documented● VERY pluggable framework● URL pattern can use traversal and routes● "no opinion"● add-ons can be described as "opinions" for the framework.● demonstrating "khufu" opinion(SQLAlchemy, Jinja2,
traversal)● built using zope technologies with the idea of rewriting all
the bad of zope
Turbogears and Pylons
● "Full stack" frameworks● The pylons project has moved to using pyramid as it's
baseline.● turbogears and pylons already share a good deal● soo... Pyramid, Pylons and Turbogears pretty much share a
lot of the core technologies and just have different opinions about what to do with them after that
● Turbogears has the most "opinions"
Bluebream
● entreprisey● component-driven, interfaces, adapters, etc● zodb● works with other database adapters(have sqlalchemy
support)● pyramid is built off of a lot of these components● uses buildout● where zope is now today● big stack, lots of dependencies
web2py
● FULL stack● built-in ORM● inspired by ruby on rails(so modules and method name map
to urls)● admin interface with support of TTW development● coding by convention● not very pythonic● lots of "magic" going on
Flask
● micro framework● no built-in ORM support● uses routes● very simple● fast development● not as robust tools
Bottle
● Micro framework● 1 file for whole thing● not a very good built-in templating engine● no built-in ORM ● initial look will seem a lot like flask
Python 3 and the web
...
Some blockers:● Webob● PIL
NOSQL notes(mongodb)
● json-style storage● for massive "web scale"● sharding, replication, file storage ● schemaless● http://www.mongodb.org/● mongokit - http://pypi.python.org/pypi/mongokit
> j = { name : "mongo" }; {"name" : "mongo"} > t = { x : 3 }; { "x" : 3 } > db.things.save(j); > db.things.save(t); > db.things.find(); { "_id" : ObjectId("4c2209f9f3924d31102bd84a"), "name" : "mongo" } { "_id" : ObjectId("4c2209fef3924d31102bd84b"), "x" : 3 } >
Questions
...